我在使用 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 cannot be cast to java.lang.Boolean
我不明白,为什么 Jasper Studio 会将它转换为 boolean 值,因为它被定义为字符串:
<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,
也在 View /表中:
REASON_DELETED VARCHAR2(250)
REASON_ADHOC VARCHAR2(4000)
最佳答案
你是对的,你的表达式返回一个字符串。但是 printWhenExpression 需要 boolean 表达式作为内容。根据docs :
printWhenExpression Definition of a Boolean expression that will determine if the element or the band should be printed or not.
目前尚不清楚您想要实现什么目标。您可能想改用 textFieldExpression
。
关于java - JRException : java. lang.ClassCastException : java. lang.String 无法转换为 java.lang.Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968314/