2012-01-09 1 views
1

は、私は私のような、通常、有効なJavaの構文を使用して、String []型の初期値式を設定することができないiReportは今日を発見しましたiReportは変数にこのような単純なもの(私が思うだろう)のようになります。iReportは - 変数 - - String []型初期値は式

:fruitNames

VariableClass:java.lang.Stringで[]

計算:何も

リセットタイプ:レポート

IncrementType:なし

初期値式:私のレポートテンプレートをコンパイルする新しいString [] { "アップル"、 "バナナ"}

私はエラーを取得する:設定するためのコードエディタで

Compilation exceptions: [email protected]d >net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions c>lass file: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: >calculator_Fruits_1326149102402_537017: 281: unexpected token: Apple @ line 281, column 55. >1 error

初期値私はパーサーが中括弧{}を赤で下線を引いていることに気づきます。これは、iReportがこれらのカッコをparam、field、またはvariableの識別子として解釈するため意味があります。だから私は競合が存在することができますが、誰でも初期値の式フィールドで文字列[]を初期化するために使用する適切な構文を知っていますか?

注:Scriptletの値を設定するだけで問題は解決しましたが、適切な構文が存在する場合はそれを知ることが本当に好奇妙です。

+1

レポートの言語を 'Java'に変更することができます(おそらく今はGroovyです)。 'Stringの助けを借りて配列を初期化しようとすることができます。split(String delimiter) 'メソッド –

+0

文字列の配列を使用する理由は何ですか? –

答えて

1

変数クラスをjava.util.Collectionに設定することで、必要なものを手に入れることができます。次に、このように初期値を設定します。

java.util.Arrays.asList("Apple", "Banana") 

さらに、レポート言語がGroovyに設定されていることを示しています。それが意図的であれば大丈夫ですが、偶然かもしれません。レポートの言語をJavaに変更することで、単純化されたことが分かります。

私は通常、変数クラスをそのような配列に設定しません。私は上記のようにjava.util.Collectionに設定しました。しかし、重要な違いがあるかどうかはわかりません。

+0

初期変数式の解が働くので、私はあなたの答えを答えにします。どうもありがとうございました!しかし、変数クラスをString []のような配列として設定することはできません。あなたは間違いなくそれをすることができます。多分それは正しい方法ではありませんが。しかし、それは動作します。 – depth13

+0

うーん...その場合は、虚偽の情報を削除するために私の答えを更新します。 – mdahlman

0

同じ問題が発生しました。実際の問題は、Java式を使用していることですが、iReportsツールはGroovyの言語、つまりGroovy式に設定されています。前のユーザーはそれに言及しました。プロパティに行った場合は、言語行を見つけてJavaに変更します。それは私のために働いた。以前のユーザーは正しいですが、Groovyに設定されたレポートが本当の問題だと指摘しておきただけです。

関連する問題