2014-10-28 75 views
-1

我正在使用Jasper-Reports 5.2.0並具有包含2個子報表的主報表。在Jasper Reports中將字段傳遞給子報表

我有一個型號ReportData其中包含兩個屬性:List<Feld> felderList<Wert> werte。這兩個子模型包含多個屬性,數據將顯示在表中。

所以這就是我將數據源傳遞給子報告的方式。

<subreport> 
     <reportElement x="0" y="28" width="553" height="51" uuid="502d9559-e6bf-49c8-a34c-ffb8916634cd"/> 
     <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F(werte)]]></dataSourceExpression> 
     <subreportExpression><![CDATA["werte_subreport.jasper"]]></subreportExpression> 
</subreport> 

<subreport> 
     <reportElement x="0" y="90" width="555" height="50" uuid="5e5b0287-5002-4e31-aa8f-afe36ea78827"/> 
     <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F(felder))]]></dataSourceExpression> 
     <subreportExpression><![CDATA["felder_subreport.jasper"]]></subreportExpression> 
</subreport> 

,這就是我如何度過我的報告(數據源是ReportData集合):

printable = JasperFillManager.fillReport(PropertyLoader.getSingleton().loadAsInputStream(REPORT_FOLDER + File.separatorChar + KONFIG_JASPER),parameters, datasource); 

不知怎的,我的價值觀是不傳遞到子報表和Jasper報表嘗試使用屬性作爲defaultWert,它不是Wert類的一部分,應顯示在子報告中。

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : defaultWert 
Caused by: java.lang.NoSuchMethodException: Unknown property 'defaultWert' on class XXXXXXXXXXXXXXXXXXXXXX.model.ReportData' 

我所定義的兩個列表wertefelder作爲主報告java.util.List類型的字段和定義的屬性爲defaultWert作爲子報告類型爲String的字段。我究竟做錯了什麼?

+0

我不明白爲什麼這個問題被標記爲iText標記。 JasperReports使用iText和AFAIK的過時版本,目前iText和JasperSoft/TIBCO之間沒有任何業務關係。我正在移除標籤。 – 2014-10-28 16:07:54

+0

我不知道這種不存在的關係。我使用了這個標籤,因爲它被用在我問這個之前的很多問題中。 – shuricano 2014-10-28 16:13:01

+1

@shuricano您可以添加如何爲您的問題創建數據源。你還有在主報告或子報告中定義的稱爲'defaultWert'的字段嗎?我對這些問題的一般故障排除步驟是刪除子報告,並確保主報告正常工作。一次只能添加一個子報告,因此我可以找到導致該問題的特定報告。 – 2014-10-29 02:20:53

回答

0

感謝您的回覆,我剛剛發現問題......這是一個愚蠢的語法錯誤......它必須是我的JRE表達式中的$ F {felder}而不是$ F(felder)......它是現在工作正常!

相關問題