【问题标题】:BIRT - check if parameter exists in master page header section.BIRT - 检查参数是否存在于母版页标题部分。
【发布时间】:2013-01-04 16:19:49
【问题描述】:

我正在使用 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 的脚本部分),因此此 sulition 似乎不适用于母版页标题部分。 知道如何在母版页中实现我的目标吗? 谢谢

【问题讨论】:

    标签: birt


    【解决方案1】:

    对不起,答案比我想象的要简单: var addedString = "";

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

    会成功的。如果报告中没有params["reportParam"],则会抛出异常并在代码的 catch 部分中捕获,然后……一切都会继续,就像什么都没发生一样。

    【讨论】:

    • 您应该接受您的回答,这样问题就不会显示为未回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多