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")