BIRT - 检查母版页标题部分中是否存在参数。

时间:2013-01-21 15:12:04

标签: birt

我正在使用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";
        }
    }   
  }
}

但是这种闷热似乎不适用于母版页标题部分,因为reportContext未知(母版页部分是正则表达式构建器,而不是识别reportContext的脚本部分)。 任何想法如何在母版页中实现我的目标? 感谢

1 个答案:

答案 0 :(得分:2)

抱歉,但我想象的答案更简单: var addedString =“”;

try
{
  if( params["reportParam"].value == 1){
      addedString ="some Added string";
  }
}
catch(err)
{
}

会做到这一点。如果报告没有params["reportParam"],则会抛出异常并捕获代码的catch部分,并且......好的一切都会继续,好像什么也没发生过一样。