2016-06-10 52 views
1

我正在使用JasperReportsPdfView在我的Spring Boot項目中生成報告。 目前,我有1個主報告和主報告有許多子報告如何用spring引導創建多個主報表?

所以,主報告 - >分報告1,次報告2,等等

我有EntityADetailDetails2

我現在用的JRDataSource傳遞數據源到每個子報告一樣......

EntityA entityA = findById(1); 
JasperReportsPdfView view = new JasperReportsPdfView(); 
view.setUrl("classpath:report/main_report.jrxml"); 
view.setApplicationContext(appContext); 

List<Detail> details = entityA.getDetails(); 
List<Detail2> details2 = entityA.getDetails2(); 
JRDataSource subReportDetail1Source = new JRBeanCollectionDataSource(details); 
JRDataSource subReportDetail2Source = new JRBeanCollectionDataSource(details2); 
final Map<String, Object> params = new HashMap<>(); 
params.put("subReportData2", subReportDetail1Source); 
params.put("subReportData3", subReportDetail2Source); 

return new ModelAndView(view, params); 

現在我想創造出許多這個主報告的每個EntityA,所以我將有EntityA

List<EntityA> listOfEntityA = findAll(); 

我如何創建我的主報告重複每個EntityA在listOfEntityA列表?

我有主意,以我目前的MainReport成爲子報告到另一個MainReport,但我不知道,通過每個detail1和detail2

回答

1

的數據源在這種情況下,你不應該通過subReportData2方式和subReportData3作爲參數把它們定義爲jrxml中的字段。

你的主要數據源,將

new JRBeanCollectionDataSource(istOfEntityA); 

在您JRXML在您定義爲場DetailDetail2名單,因此對EntityA

<field name="details" class="java.util.List"/> 
<field name="details2" class="java.util.List"/> 

的干將然後添加子報表的細節帶並將數據源表達式設置爲:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{details}) 

這樣的報告會遍歷細節帶EntityA名單上, 並與詳細列表Detail2的 EntityA類的作爲數據源

調用子報告
+0

謝謝,它的工作 –

+0

@first_time_user,感謝接受有樂趣。 –

相關問題