2016-06-10 7 views
1

Ich verwende JasperReportsPdfView, um einen Bericht in meinem Spring Boot-Projekt zu erstellen. Zur Zeit habe ich 1 Hauptbericht und der Haupt-Bericht hat viele Unter berichtetWie erstellt man mehrere Hauptberichte mit Spring Boot?

So, Hauptbericht -> Teilbericht 1, Sub-Bericht 2, etc ...

ich EntityA habe, die Detail und Details2 haben

jetzt ich JRDataSource bin mit der Datenquelle zu jedem Unterbericht übergeben, wie ...

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); 

jetzt mag ich für jedenviele diesen Hauptbericht erstellen, so werde ich Liste der EntityA wie

List<EntityA> listOfEntityA = findAll(); 

Wie kann ich mein Hauptbericht erstellen für jede Entität in listOfEntityA wiederholt?

Ich habe Idee meinen aktuellen MainReport machen Unter Bericht zu einem anderen MainReport zu werden, aber ich weiß nicht, die Art und Weise die Datenquelle jeden detail1 und detail2

Antwort

1

Sie sollen nicht die subReportData2 passieren In diesem Fall passieren und subReportData3 als Parameter setzen definieren sie als Felder in der jrxml.

wird Ihr Hauptdatenquelle

new JRBeanCollectionDataSource(istOfEntityA); 

sein In Ihrem jrxml in Sie als Felder Detail und Detail2 Liste definieren, damit die Getter auf EntityA

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

Dann fügen Sie Unterbericht Sie zum Detailband und setzen Sie den Datenquellenausdruck wie folgt:

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

Auf diese Weise der Bericht die Detailband auf Entität Liste iteriert wird, und die subreports mit der Liste der Details nennen und Detail2 der Entität Klasse als Datenquelle

+0

danke, es hat funktioniert –

+0

@first_time_user, danke für die Annahme viel Spaß. –

Verwandte Themen