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 cannot be cast to 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,
还有 view/table:
REASON_DELETED VARCHAR2(250)
REASON_ADHOC VARCHAR2(4000)
你是对的,你的表达式 returns 是一个字符串。但是 printWhenExpression
期望布尔表达式作为内容。根据 docs:
printWhenExpression
Definition of a Boolean expression that will determine if the element or the band should be printed or not.
不清楚您要达到什么目的。您可能想改用 textFieldExpression
。
我在将 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 会将其转换为布尔值,因为它被定义为字符串:
<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/table:
REASON_DELETED VARCHAR2(250)
REASON_ADHOC VARCHAR2(4000)
你是对的,你的表达式 returns 是一个字符串。但是 printWhenExpression
期望布尔表达式作为内容。根据 docs:
printWhenExpression Definition of a Boolean expression that will determine if the element or the band should be printed or not.
不清楚您要达到什么目的。您可能想改用 textFieldExpression
。