使用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会将它转换为布尔值,因为它被定义为String:
<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)
答案 0 :(得分:2)
你是对的,你的表达式返回一个String。但是printWhenExpression
期望布尔表达式作为内容。根据{{3}}:
printWhenExpression 布尔表达式的定义,用于确定是否应打印元素或波段。
目前尚不清楚你想要实现的目标。您可能希望改为使用textFieldExpression
。