如何在 BIRT 中打印之前将前缀与动态文本分开

How to seperate prefix from a dynamic text before printing in BIRT

我想在报告中作为动态文本打印的名称在数据库中采用加密格式。我在此动态文本字段的 onCreate 中借助以下脚本解密此名称。

this.text=Packages.com.erp.util.EncryptUtil.decrypt(name);

现在的问题是,这个名字带有前缀Mr,Ms等,在一些影响名字解密的报告中与名字连接,我想要单独的名字来解密。将查询中的前缀和名称分开会扰乱绑定并导致其他一些错误。所以我想做的是检查任何 space 或拆分的名称,以便我可以在第一个 space 之后识别名称,在 space 之前将是前缀。然后我想将该名称单独发送到 decypt 方法,并且在返回解密名称时应该使用一些脚本与前缀连接并在动态文本字段中打印。如何在 BIRT 报表设计器版本中实现此目的:3.7.1.v2

From 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;