[英]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.TRUE
或Boolean.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.