我无法正确找到如何将JavaBean DS正确传递到子子报表。我有以下的Java代码:JavaBean DataSource未传递给子子报告
JRDataSource javaBeansKapitelDS = new JRBeanCollectionDataSource(BeanFactory.generateKapitelCollection());
jasperReport = JasperCompileManager.compileReport("JRXML/Subreports.jrxml");
jasperUnterkapitelReport = JasperCompileManager.compileReport("JRXML/Subreports_subreport1.jrxml");
jasperEntryReport = JasperCompileManager.compileReport("JRXML/Subreports_subreport1_subreport1.jrxml");
params.put("SUB_DATASOURCE", BeanFactory.generateUnterKapitelCollection());
params.put("SUB_SUB_DATASOURCE", BeanFactory.generateEntryCollection());
jasperPrint = JasperFillManager.fillReport(jasperReport, params, javaBeansKapitelDS);
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/TestJAVABeansDS.pdf");
在主报告我有一个报告,其中有一个报表,进而拥有自己的报表。在主报告中,我将子报表的数据源设置为数据源表达式new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{SUB_DATASOURCE})
,并且工作得很好!
在子报表中,我尝试为子报表(new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{SUB_SUB_DATASOURCE})
)做同样的事情,但我无法将SUB_SUB_DATASOURCE参数从主报表传递到子报表以便在其中使用它。如果我在主报告中定义的报表参数:
<subreportParameter name="SUB_SUB_DATASOURCE"> <subreportParameterExpression><![CDATA[$P{SUB_SUB_DATASOURCE}]]></subreportParameterExpression>
我得到
Caused by: java.lang.NoSuchMethodException: Unknown property '' on class 'class jasperreports.datasource.Entry'
...
Fill 1: exception
net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
...
我使用的是最新的JasperReports的库异常5.5.1
所以我的问题是:我如何传递给子报表JavaBeansDS为了使用它sububreport?
感谢,你完美地描述了这个场景!但这正是我已经完成的。 第二我尝试在报告B中使用参数SUB_SUB_DATASOURCE我得到上述异常。 – Alex