繁体   English   中英

JRException:java.lang.ClassCastException:java.lang.String无法转换为java.lang.Boolean

[英]JRException: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean

将Jaspersoft Studio与Oracle数据库一起使用时出现错误。 一旦有数据,下一行

<printWhenExpression><![CDATA[$P{REPORT_TYPE}.substring(0,1)=="R"? $F{REASON_DELETED}:$F{REASON_ADOC}]]></printWhenExpression>

引发以下错误:

net.sf.jasperreports.engine.JRException:java.lang.ClassCastException:java.lang.String无法转换为java.lang.Boolean

我不明白,为什么Jasper Studio会将其转换为布尔值,因为它被定义为字符串:

<field name="REASON_ADOC" class="java.lang.String"/>
<field name="REASON_DELETED" class="java.lang.String"/>

SQL对我也很好:

NVL(cr.REASON_ADHOC,'-') AS reason_adoc,
NVL(cr.REASON_DELETED,'-') AS reason_deleted,

以及在视图/表中:

REASON_DELETED  VARCHAR2(250)
REASON_ADHOC    VARCHAR2(4000)

没错,您的表达式返回一个字符串。 但是printWhenExpression期望布尔表达式作为内容。 根据文档

printWhenExpression布尔表达式的定义,它将确定是否应打印元素或带。

目前尚不清楚您要达到什么目标。 您可能要改用textFieldExpression

暂无
暂无

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

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