0

私は 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 が不明であるため、この sulotion はマスター ページ ヘッダー セクションでは機能しないようです (マスター ページ セクションは正規表現ビルダーであり、reportContext が認識されるスクリプト セクションではありません)。マスターページで目標を達成するにはどうすればよいですか? ありがとう

4

1 に答える 1

2

申し訳ありませんが、答えは私が想像したよりも簡単です: var addedString = "";

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

トリックを行います。レポートに例外がない場合params["reportParam"]、コードのキャッチ セクションで例外がスローされ、キャッチされます。そして、何も起こらなかったかのようにすべてが続行されます。

于 2013-01-21T15:35:08.353 に答える