Java Jasper报告中的表达式值:“0”;无法从字符串强制转换为布尔值;错误

Java Jasper报告中的表达式值:“0”;无法从字符串强制转换为布尔值;错误,java,jasper-reports,Java,Jasper Reports,这是我的表达式代码: ($F{Personel_ODEME}.equals(Boolean.TRUE)) ? "PAID" : "NO PAID" 如果此人已付款,其Jasper纳税报告将显示为已付款,否则未付款。在DB中,此字段是布尔类型,但表达式返回的是字符串类型。因此,我得到了一个无法从字符串转换为布尔值的错误。问题源于您的测试$F{Personel_ODEME}.equals(Boolean.TRUE),Jasper认为这是字符串到布尔值的比较,并且不喜欢。要解决此问题,请尝试以下方法

这是我的表达式代码:

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

如果此人已付款,其Jasper纳税报告将显示为
已付款
,否则
未付款
。在DB中,此字段是布尔类型,但表达式返回的是字符串类型。因此,我得到了一个
无法从字符串转换为布尔值的错误。

问题源于您的测试
$F{Personel_ODEME}.equals(Boolean.TRUE)
,Jasper认为这是
字符串到
布尔值的比较,并且不喜欢。要解决此问题,请尝试以下方法:

($F{Personel_ODEME}.equals(Boolean.TRUE.toString())) ? "PAID" : "NO PAID"
这将导致对字符串进行比较

值得注意的是,在Java中,
“true”.equals(Boolean.true)
将导致false

编辑:


这似乎是一个Jasper“PrintWhen”表达式,它允许您确定是否打印单元格的内容。它的返回值应为
Boolean.TRUE
Boolean.FALSE
。当您返回“PAID”时,Jasper尝试将该
字符串作为
布尔值计算,但它不能,因此它会抛出异常。

好的,我修复了它。我将
$F{Personel\u ODEME}
的类型更改为String,然后它就像一个符咒一样工作。

试试这个:

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

您必须将字段的类表达式更改为java.lang.String,因为默认情况下它将是java.lang.Boolean。当它计算if并尝试返回“PAID”或“NO PAID”时,该字段尝试将其转换为布尔值以便显示

所有功劳都归于:


注意:true(关键字)区分大小写。不应该是大写(TRUE)

我相信你的意思是“TRUE”。等于(Boolean.TRUE)不,这不能解决我的问题$F{Personel_ODEME}是布尔字段,我不能使用toString方法。得到相同的错误。我知道问题出在哪里,但如何解决?有办法解决这个问题吗?
($F{Personel_ODEME}==true?"PAID":"NO PAID")