Mit der JasperReports Integration kann eine mit dem JasperSoft Studio erstellte Vorlagen oder Template ausgelesen, mit Daten befüllt und anschließend angezeigt oder gespeichert werden. Ein Report besteht meist aus drei Teilen:
Mapping Wizard
Laden Sie selbst eine Ergebnismenge vor dem Aufruf des QueryWizards z.B. über
List<Customer> allCustomers = new CustomerDAO().findAll(); |
oder
Order find = new OrderDAO().find(10248); Set<Orderdetail> orderdetails = find.getOrderdetails(); |
oder
List<BeanItem<Customer>> selectedItems = table.getSelectedItems(); |
und weisen Sie dann den Variablennamen in diesem Beispiel "allCustomers", "orderdetails" oder "selectedItems" diesem Feld zu.
Wie sie einen Report anbinden
Verwenden des Ergebnisses nach dem Wizard
Nach dem Wizard wird folgender Code generiert:
Report.New().jrxml("/report.jrxml") .dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class) .getProductsOrderedByCategory()) .parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf()); |
Weisen Sie einer Variable das erzeugt Statement zu
a) Positionieren Sie nun den Cursor an das Ende des gesamten Statements also nach "exportToResource(Format.Pdf());"
b) Drücken Sie Strg + 1 → Wählen Sie "Assing statement to new local variable (Strg+2, L)"
c) Bestätigen Sie die Auswahl mit Enter.
Es wird jetzt automatisch eine Variable vor dem Statement erzeugt welche die Resource entgegen nimmt.
Resource exportToResource = Report.New().jrxml("/report.jrxml") .dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class) .getProductsOrderedByCategory()) .parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf()); |
Erstellen Sie eine Komponente, mit welcher Sie PDF-Resources anzeigen können:
@Tag("object") public class EmbeddedPdfDocument extends Component implements HasSize { public EmbeddedPdfDocument(final StreamResource pdfResource) { this(); this.getElement().setAttribute("data", pdfResource); } public EmbeddedPdfDocument(final String url) { this(); this.getElement().setAttribute("data", url); } protected EmbeddedPdfDocument() { this.getElement().setAttribute("type", "application/pdf"); this.setSizeFull(); } } |
Fügen Sie dann diese Komponente zu Ihren View hinzu:
Resource exportToResource = Report.New().jrxml("/report.jrxml") .dataSource(com.xdev.dal.DAOs.get(com.company.jasperreportsdemo.dal.ProductDAO.class) .getProductsOrderedByCategory()) .parameter("creator", "CK").parameter("created", new Date()).exportToResource(Format.Pdf()); this.add(new EmbeddedPdfDocument(exportToResource)); |