我正在使用 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
的属性定义为 String 类型的字段。我做错了什么?
感谢您的回复,我刚刚发现了问题...这是一个愚蠢的语法错误...它必须是 $F{felder} 而不是我的 JRExpression 中的 $F(felder)...现在工作正常!