我無法正確找到如何將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