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

时间:2015-01-15 16:34:21

标签: java oracle jasper-reports

使用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)

1 个答案:

答案 0 :(得分:2)

你是对的,你的表达式返回一个String。但是printWhenExpression期望布尔表达式作为内容。根据{{​​3}}:

  

printWhenExpression   布尔表达式的定义,用于确定是否应打印元素或波段。

目前尚不清楚你想要实现的目标。您可能希望改为使用textFieldExpression