2009-07-19 8 views
4

これは私の表現のコードです:式の値:「ブールに文字列からキャストすることはできません」というエラー

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

個人的に支払われている場合は、彼女/彼のジャスパー税レポートはそうNO PAIDPAIDを読み込みます。 DBでは、このフィールドはブール型ですが、式がString型を返しています。だからCannot cast from String to Booleanエラーが発生しています。

答えて

3

OK、修正しました。私は$F{Personel_ODEME}のタイプをStringに変更しました。それは魅力的に機能しました。

10

問題は、あなたのテスト$F{Personel_ODEME}.equals(Boolean.TRUE)に由来し、ジャスパーはStringからBooleanまでの比較と考えています。この問題を修正するには、これを試してください:これはStringStringとの比較になります

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

Javaでは、"true".equals(Boolean.TRUE)がfalseになることに注意してください。

編集:

これは、セルの内容を印刷するかしないかどうかを判断することができますジャスパー「PrintWhen」式、ように見えます。戻り値としてBoolean.TRUEまたはBoolean.FALSEが必要です。 "PAID"を返すと、JasperはStringBooleanとして評価しようとしますが、それは例外ではありません。

+1

私はあなたが意味すると信じています - "true" .equals(Boolean.TRUE) –

+0

@Jack Leow:それはまさに私の意味です。ありがとう。編集されました。 – akf

+0

これは私の問題を解決しません。 $ F {Personel_ODEME}はブール値フィールドです。私はtoStringメソッドを使用できません。同じエラーになります。 –

1

はこれを試してみてください:

Boolean.valueOf($F{Personel_ODEME}.equals('TRUE')) ? "PAID" : "NO PAID" 
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

0
($F{Personel_ODEME}==true?"PAID":"NO PAID") 

注:真(キーワード)大文字と小文字が区別されます。そして、大文字であってはいけません。

関連する問題