これは私の式コードです:
($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID"
Personelが支払われる場合、彼女/彼のJasper税レポートは読みます。PAID
そうでない場合はNO PAID
。DBでは、このフィールドはブール型ですが、式は文字列型を返します。だから私はCannot cast from String to Boolean
エラーが発生しています。
これは私の式コードです:
($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID"
Personelが支払われる場合、彼女/彼のJasper税レポートは読みます。PAID
そうでない場合はNO PAID
。DBでは、このフィールドはブール型ですが、式は文字列型を返します。だから私はCannot cast from String to Boolean
エラーが発生しています。
$F{Personel_ODEME}.equals(Boolean.TRUE)
この問題は、Jasperが比較対象であると考えているテストにString
起因し、Boolean
気に入らないものです。これを修正するには、次のことを試してください。
($F{Personel_ODEME}.equals(Boolean.TRUE.toString())) ? "PAID" : "NO PAID"
これにより、String
比較String
が行われます。
"true".equals(Boolean.TRUE)
Javaでは、aがfalseになることに注意してください。
編集:
これは、セルの内容を印刷するかどうかを決定できるJasperの「PrintWhen」式のようです。それは期待しているBoolean.TRUE
かBoolean.FALSE
、その戻り値としてです。「PAID」を返すと、JasperはそれをカントString
として評価しようとするため、例外がスローされます。Boolean
OK、修正しました。のタイプを文字列に変更$F{Personel_ODEME}
すると、チャームのように機能しました。
デフォルトではjava.lang.Booleanになるため、フィールドのクラス式をjava.lang.Stringに変更する必要があります。ifを評価し、「PAID」または「NO PAID」を返そうとすると、フィールドはそれをブール値に変換して表示できるようにします。
すべてのクレジットは次のようになります。
http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=61775
これを試して:
Boolean.valueOf($F{Personel_ODEME}.equals('TRUE')) ? "PAID" : "NO PAID"
($F{Personel_ODEME}==true?"PAID":"NO PAID")
注:true(キーワード)では大文字と小文字が区別されます。そして資本であってはならない(TRUE)