5

这是我的表达代码:

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

如果支付 Personel,她/他的 Jasper 税务报告将显示为PAID,否则为NO PAID。在数据库中,该字段是布尔类型,但表达式返回的是字符串类型。所以我得到一个Cannot cast from String to Boolean错误。

4

5 回答 5

10

问题源于你的测试$F{Personel_ODEME}.equals(Boolean.TRUE),贾斯珀认为这是一个String比较Boolean,不喜欢。要解决此问题,请尝试以下操作:

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

这将导致String比较String

值得注意的是,在 Java 中,a"true".equals(Boolean.TRUE)会导致错误。

编辑:

这似乎是一个 Jasper 'PrintWhen' 表达式,它允许您确定是否打印单元格的内容。它期待Boolean.TRUEBoolean.FALSE作为它的返回值。当您返回“PAID”时,Jasper 会尝试将其评估StringBoolean,它不能,因此它会引发异常。

于 2009-07-19T01:58:59.910 回答
4

好的,我修好了。我将$F{Personel_ODEME}' 的类型更改为字符串,然后它就像一个魅力。

于 2009-07-19T14:50:50.227 回答
2

您必须将字段的类表达式更改为 java.lang.String,因为默认情况下它将是 java.lang.Boolean。当它评估您的 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(keyword) 区分大小写。并且不应该是大写(TRUE)

于 2015-12-22T09:47:17.213 回答