DynamicJasper: Runtime generation of Jasper Reports
DynamicJasper, an open-source API which provides runtime generation of Jasper Reports, recently released version 1.3. InfoQ took the opportunity to learn more about this product, and what it provides for users.
DynamicJasper builds on top of Jasper Reports, which itself recently released version 2.0. It provides:
- Dynamically-created repeating groups and variables - repeating groups can be created at runtime using either simple or complex expressions - they can also have headers and footers which display operation results (e.g. SUM or COUNT)
- Custom styling of columns - the display of both the column headers and the column data can be customized at runtime with HTML-like properties (e.g. borders, style, colours, font)
- Calculated columns - column values can be based on formulas (e.g. column A * column B) or on custom Java operations
- Simplified subreports and combined reports - subreports and combined reports can be created with ease, and they can also be dynamic
- Simplified chart creation - chart creation is done by selecting columns from a given report and a report type
- Exporting of reports - Reports can be exported to Jasper Reports-supported formats such as PDF, HTML and RTF - they can also be exported to Excel in a plain format without page breaks and formatting, which is time-consuming with Jasper Reports
- WebWork integration - As with Jasper Reports, DynamicJasper also integrates with WebWork
There is also an online test application which shows DynamicJasper working together with Google Web Toolkit (GWT) - future plans include releasing the GWT integration as a ready-to-integrate component of DynamicJasper, as well as the addition of three-level subreports.
Carlos Jhunie Pangilinan
I use struts 220.127.116.11 and dynamic jasper 3.1.1. But the struts2 Result uses TestUtils class from struts 2.0.x version. It is missing in struts 2.1.x. How can I use DJ in struts 18.104.22.168. I am getting a java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils. How can I resolve that?