eclipse - 如何在 BIRT 中打印之前将前缀与动态文本分开
问题描述
我想在报告中作为动态文本打印的名称在数据库中采用加密格式。我在此动态文本字段的 onCreate 中借助以下脚本解密此名称。
this.text=Packages.com.erp.util.EncryptUtil.decrypt(name);
现在的问题是,这个名字带有前缀 Mr、Ms 等与一些报告中的名字连接,这会影响名字解密,我只想要这个名字来解密。在查询中分离前缀和名称会干扰绑定并导致其他一些错误。所以我想要做的是检查任何空格或拆分的名称,以便我可以在第一个空格之后识别任何即将出现的名称和空格之前的前缀。然后我想将该名称单独发送到该decypt
方法,并在返回解密名称时应使用某些脚本与前缀连接并在动态文本字段中打印。如何在 BIRT Report Designer 版本中实现这一点:3.7.1.v2
解决方案
从DataSet
将名称属性拖放到报告中的某处并使其不可见。转到onRender
BIRT 中脚本选项卡中可用的该名称属性,然后粘贴以下代码以将前缀与名称分开,并将名称单独发送到您的方法。
name = this.getValue();
var sArr = name.split(" ");
name="";
for(var i=1;i<sArr.length;i++){
if(sArr[i]!=null)
name = name+" "+sArr[i];
}
name = name.replace(/^[ ]+|[ ]+$/g,'')
name=sArr[0]+" "+Packages.com.yourpackagename.yourmethodname(name);
现在将动态文本从调色板拖放到您想要查看名称的位置。转到onCreate
脚本选项卡中可用的动态文本字段,然后粘贴以下代码以打印从您的方法返回的结果以及前缀。
this.text=name;
推荐阅读
- oracle - 立即对名称中包含数字的表执行
- google-cloud-platform - 正在修复的 GCP MIG 实例
- assembly - 有没有办法通过在 MIPS 中自我修改来创建计数器?
- angular - Angular如何将小数转换为(。)
- azure-devops - Azure DevOps - 在一周中的特定日子使用 CI 触发器禁用管道
- python - 尽管同一块中的代码工作正常,但 Python If 语句被跳过
- c# - 读取响应正文流导致空字符串
- javascript - 使用 CSS 按钮更改主包装器背景颜色
- java - 如何从 commons 包继承和替换 @Entity?
- kubernetes - 如何告诉 Kibana 读取包含破折号的容器名称作为单个字符串