1

最近JasperReportsライブラリバージョン4.1.3を更新しました。以前はJasperReports 4.0.2で作成されたレポートがありました。言語は面白いです。 JasperReports 4.1.3でそれを実行すると、例外が生成されます(ClassCastException - java.lang.Stringをjava.lang.Booleanにキャストできません)。groovy言語でJasperReports 4.1.3で式を評価するときのエラー

テキストフィールドのPrintWhen表現に文字列(例: "abc")を設定しているため、例外が正しく生成されます。問題は、このライブラリに更新する前に、そのような式であっても、レポートが機能したことです。

のような表現:「any_stringは」として評価し、空の文字列は、として評価しました。

レポートを変更せずに以前と同じ動作をさせるために設定できるプロパティはありますか? (私は解決策は条件を適切なブール値に変更することだと知っていますが、多くのレポートが含まれていて複雑な条件がたくさんあるので、私にとって実行可能な解決策ではありません)。

ありがとうございました!

+0

最新バージョンのJasperReportsを試しましたか(今は4.5と思う)。これはバグのように聞こえますが、それはあなたが期待したやり方、あるいは以前と同じように動作するはずです。 –

+0

iReport 4.0.2(jasperreports 4.0.2)を使用してレポートを作成しましたが、今はiReport 4.5.1(jasperreports 4.5.1)で実行しましたが、もう動作しません。以前と同じ機能を持たせるために、設定可能なプロパティがあるかもしれないと思った(そうでなければ、すでに作成されたレポートをすべて修正する必要がある)。 –

答えて

0

Jasperreportsライブラリの変更ログとSVNログを分析したところ、リリース4.1.1で変更が加えられ、クラスへのキャストはもう終了していないことがわかりました。これは、式の値クラスの非推奨に関するリファクタリングの一部です。

変更ログから: - 値クラスのプロパティは、式オブジェクトで非推奨になりました。 式の型を指定する必要はありません。

解決方法は、式が正しいブール式になるように印刷するか、式が印刷されるたびにキャストを追加することです。