如何将参数从数据集行值传递到通过脚本化数据源访问的java函数?
我有一个解密加密字符串的java类
class Decryptor{
public String decrypt(text)
{
.
.
StandardPBEStringEncryptor textEncryptor = new StandardPBEStringEncryptor();
return textEncryptor.decrypt(text);
}
}
我将它导入到我的birt报告中,如下所示: 我创建了一个名为dsCode的数据集,其列为“code”;
open:
sessionUtil = new Packages.com.reports.server.generator.data.SessionUtil();
sessionUtil.openCurrentSession();
c = new Decryptor();
textDecrpt = c.decrypt("O6pas1t9NyY9bmAtjvX2NA==");
fetch;
row["code"] = textDecrpt ;
return true;
这很好用。但是我想从anther数据集行值(dsCustomerIfdo的encryptedCodecolumn)将值传递给decrypt函数。我该怎么做呢?我将dsCode作为子报表的数据源,并将名为pmCode的参数添加到dsCode,并使用“数据集参数绑定”将值传递给它 并制作了像这样的剧本
textDecrpt = c.decrypt(params["pmCode"]);
这给了我一个错误的文件结束未定义。 如何在javascript中访问数据集行值?或者将数据集的rowvalue传递给脚本函数?
这不起作用
var dset = reportContext.getDesignHandle().findDataSet("dsCustomerInfo");
textDecrpt = c.decrypt(dset.getRow("encryptedCode").value);
感谢
答案 0 :(得分:0)
我通过不使用其他数据集来解决它,就像我最初尝试的那样。刚刚使用了dsCusotmerInfo,添加了一个名为decryptedCode的计算列,并在fetch上添加了scirpt。这会解密所有客户的所有代码。
sessionUtil = new Packages.com.reports.server.generator.data.SessionUtil();
sessionUtil.openCurrentSession();
c = new Decryptor();
row["decryptedCode"] = c.decrypt(row["encryptedCode"]);
return true;