我正在使用 birt 报告版本 2.5.0 我的报告使用一个名为 reportParam 的输入参数。我的报告使用全局母版页,在其标题部分中,我想添加一些文本取决于 reportParam 参数的值。当我使用代码时没有问题:
var addedString = "";
if( params["reportParam"].value == 1){
addedString ="some Added string";
}
我的问题是,由于我的母版页是全局的并被定义为共享资源,它可能被没有的报告使用, params["reportParam"]
并且对于那些报告,将引发异常并且不会生成报告。我需要一种方法来检查是否params["reportParam"]
存在。
我已经看到了这个问题的解决方案:
var addedString = "";
var params = reportContext.getDesignHandle().getAllParameters();
//traverse that list
for(var i=0; i<params.size(); i++) {
var sParClass = params.get( i ).getClass().toString();
//we need to check if it is a real parameter and not a parameter group
if( sParClass == "class org.eclipse.birt.report.model.api.ScalarParameterHandle" ) {
//do checks here...just a demo how to get name and value
var parameterName = params.get( i ).getFullName();
if( parameterName == "ResolutionPRM" ){
if( params["reportParam"].value == 1 ){
addedString ="some Added string";
}
}
}
}
但是这个 solotion 似乎不适用于母版页标题部分,因为 reportContext 未知(母版页部分是正则表达式构建器,而不是识别 reportContext 的脚本部分)。知道如何在母版页中实现我的目标吗?谢谢