2016-12-27 27 views
0

最近我遇到了使用JavaBeans數據源打印主/從報表的問題(由於某些原因,我沒有使用MySQL數據源)。修復iReport中的子報表表達類

我不能改變子報表的表達式類爲java.util.List(我做了subreport.jrxml和mainreport.jrxml)。但正如您在下面的圖片中看到的那樣,該類表達式在我的子報表屬性中不存在。

java.util.List not found here

然後我試圖把它手動編寫。我將這些代碼添加到我的XML文件中。

<subreport> 
    <reportElement x="0" y="20" width="555" height="100"/> 
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{orderDetails})]]></dataSourceExpression> 
    <subreportExpression class="java.util.List"><![CDATA[$P{SUBREPORT_DIR} + "sub_main_report.jasper"]]></subreportExpression> 
</subreport> 

現在它顯示了另一個這樣的錯誤。 another error

對不起,如果我解釋說不好。這裏有沒有人對我有同樣的問題?

注:我的iReport版本是4.0.1,在Linux Ubuntu 14.04 64位環境中運行JDK 1.7。

+0

One * subreport *元素僅用於一個報告。 'subreportExpression'不能列表 –

回答

0

subreportExpression只能與幾個類一起使用,例如java.lang.String。它不能是java.util.List。您的第二條錯誤消息顯示了接受的類的列表。

更新

你必須明白的是,subreportExpression告訴系統如何加載子報告。只能有一個值。所以表達式不能是java.util.List。如果您有多個子報告,則必須有多個元素subreport,每個元素都有自己的subreportExpression

+0

謝謝。我現在明白了。對不起,我的電子郵件很長時間沒有收到。 我意識到我必須使用JRBeanDataSource並在構造函數中傳遞列表類型作爲子報表元素的數據源。 非常感謝! –

+1

我接受了你的回答。但我需要分鐘。 15代表upvote它 –