我使用的是Jasper-Reports 5.2.0,并且主报告包含2个子报告。
我有一个模型ReportData
,其中包含两个属性:List<Feld> felder
和List<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 Reports尝试将属性用作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'
我在主报告中将两个列表werte
和felder
定义为java.util.List
类型的字段,并将defaultWert
的属性定义为字符串中的字符串类型子报表。我做错了什么?
答案 0 :(得分:0)
感谢您的回复,我刚发现问题......这是一个愚蠢的语法错误......在我的JRExpression中它必须是$ F {felder}而不是$ F(felder)...它正在工作好了!