繁体   English   中英

Jasper报告中的表达式值:“无法从String转换为布尔值”错误

[英]Expression Value in Jasper Report: “Cannot cast from String to Boolean” error

这是我的表达代码:

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

如果Personel被支付,她/他的Jasper税务报告将读取PAID ,否则NO PAID支付。 在DB中,此字段是布尔类型,但表达式返回String类型。 所以我得到一个Cannot cast from String to Boolean错误。

问题源于您的测试$F{Personel_ODEME}.equals(Boolean.TRUE) ,Jasper认为这是一个String to Boolean比较,并不喜欢。 要解决此问题,请尝试:

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

这将导致String to String比较。

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

编辑:

这似乎是Jasper'PrintWhen'表达式,它允许您确定是否打印单元格的内容。 它期望Boolean.TRUEBoolean.FALSE作为其返回值。 当您返回“PAID”时,Jasper会尝试将该String作为Boolean进行评估,但它不能抛出异常。

好的,我修好了。 我将$F{Personel_ODEME}的类型更改为String,然后它就像魅力一样。

您必须将字段的Class Expression更改为java.lang.String,因为默认情况下它将是java.lang.Boolean。 当它评估你的if并尝试返回“PAID”或“NO PAID”时,该字段会尝试将其转换为Boolean,以便显示它。

所有功劳归功于:

http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=61775

尝试这个:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM