5

これは私の式コードです:

($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID"

Personelが支払われる場合、彼女/彼のJasper税レポートは読みます。PAIDそうでない場合はNO PAID。DBでは、このフィールドはブール型ですが、式は文字列型を返します。だから私はCannot cast from String to Booleanエラーが発生しています。

4

5 に答える 5

10

$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.TRUEBoolean.FALSE、その戻り値としてです。「PAID」を返すと、JasperはそれをカントStringとして評価しようとするため、例外がスローされます。Boolean

于 2009-07-19T01:58:59.910 に答える
4

OK、修正しました。のタイプを文字列に変更$F{Personel_ODEME}すると、チャームのように機能しました。

于 2009-07-19T14:50:50.227 に答える
2

デフォルトではjava.lang.Booleanになるため、フィールドのクラス式をjava.lang.Stringに変更する必要があります。ifを評価し、「PAID」または「NO PAID」を返そうとすると、フィールドはそれをブール値に変換して表示できるようにします。

すべてのクレジットは次のようになります。

http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=61775

于 2011-08-03T07:20:10.480 に答える
1

これを試して:

Boolean.valueOf($F{Personel_ODEME}.equals('TRUE')) ? "PAID" : "NO PAID" 
于 2010-11-14T14:07:50.713 に答える
0
($F{Personel_ODEME}==true?"PAID":"NO PAID")

注:true(キーワード)では大文字と小文字が区別されます。そして資本であってはならない(TRUE)

于 2015-12-22T09:47:17.213 に答える