2015-01-15 45 views
1

我在使用Jaspersoft Studio和Oracle數據庫時出錯。 只要有一些數據,以下行JRException:java.lang.ClassCastException:java.lang.String不能轉換爲java.lang.Boolean

<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

我不明白,爲什麼碧玉工作室將它轉換爲一個布爾值,因爲它是定義爲一個字符串:

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

回答

2

你說的沒錯,你的表達返回一個字符串。但printWhenExpression需要布爾表達式作爲內容。根據docs

printWhenExpression Definition of a Boolean expression that will determine if the element or the band should be printed or not.

你不明白你想達到什麼目的。您可能需要使用textFieldExpression

+0

謝謝!我確定我現在正在工作...應該檢查了printwhepression類! – Stef 2015-01-15 17:01:57

+0

不客氣。我很高興能夠提供幫助 – 2015-01-15 17:03:17

相關問題