An EGL report handler provides blocks of code that the JasperReports engine can access at run time. Predefined function names tie some of these code blocks to events that occur when JasperReports fills a report. Such events might include the beginning or end of a page, of a line item, or of the report itself. You can call other, custom functions directly from the XML design file source.
The New EGL Report Handler wizard will give you a list of function names that correspond to report fill events. JasperReports will invoke "beforePageInit()", for example, before entering a page. It is up to you to create the code for these functions.
These examples barely begin to address the complexities possible in a report handler. For more detail, see the JasperReports documentation.
handler handlerName type jasperReport // Use Declarations use usePartReference; // Constant Declarations) const constantName constantType = literal; // Data Declarations identifierName declarationType; // Pre-defined Jasper callback functions function beforeReportInit() end function afterReportInit() end function beforePageInit() end function afterPageInit() end function beforeColumnInit() end function afterColumnInit() end function beforeGroupInit(stringVariable string) end function afterGroupInit(stringVariable string) end function beforeDetailEval() end function afterDetailEval() end end
handler my_report_handler type jasperReport // Data Declarations report_title String; // Jasper callback function function beforeReportInit() report_title = getReportParameter("ReportTitle"); end end
handler my_report_handler type jasperReport // Data Declarations item_count int; // Jasper callback function function beforeDetailEval() item_count = getReportVariableValue("itemCount"); end function afterDetailEval() setReportVariableValue("itemCount", (item_count + 1)); end endRemember to match variable types in the report handler with those in your XML source file.
handler my_report_handler type jasperReport // Data Declarations employee_first_name String; // Jasper callback function function beforeColumnInit() employee_first_name = getFieldValue("fName"); end end
handler my_report_handler type jasperReport // Data Declarations customer_array customerRecordType[]; c customerRecordType; // Jasper callback function function beforeReportInit() customer ReportData; //create the ReportData object for the Customer subreport c.customer_num = getFieldValue("c_customer_num"); c.fname = getFieldValue("c_fname"); c.lname = getFieldValue("c_lname"); c.company = getFieldValue("c_company"); c.address1 = getFieldValue("c_address1"); c.address2 = getFieldValue("c_address2"); c.city = getFieldValue("c_city"); c.state = getFieldValue("c_state"); c.zipcode = getFieldValue("c_zipcode"); c.phone = getFieldValue("c_phone"); customer_array.appendElement(c); customer.data = customer_array; addReportData(customer, "saveCustomer"); end end
<jasperReport name="MasterReport" ... scriptletClass="subreports.my_report_handler"> ... <subreport> <dataSourceExpression> <![CDATA[(JRDataSource)(((subreports.SubReportHandler) $P{REPORT_SCRIPTLET}).getReportData( new String("saveCustomer")))]]>; </dataSourceExpression> <subreportExpression class="java.lang.String"> <![CDATA["C:/RAD/workspaces/customer_subreport.jasper"]]>; </subreportExpression> </subreport> ... </jasperReport>
handler my_report_handler type jasperReport function hello () returns (String) return("Hello, world!"); end end
<jasperReport name="MasterReport" ... scriptletClass="my_package.my_report_handler"> ... <summary> <band height="40"> <textField> <reportElement positionType="Float" x="0" y="20" width="500" height="15"/> <textElement textAlignment="Center"> <font reportFont="Arial_Bold" size="10"/> </textElement> <textFieldExpression class="java.lang.String"> <![CDATA[((my_package.my_report_handler)$P{REPORT_SCRIPTLET}).hello()]]> </textFieldExpression> </textField> </band> </summary> ... </jasperReport>
The phrase "Hello, world!" will print at the end of the report.
Related concepts
EGL report creation process overview
EGL reports overview
Related tasks
Creating an EGL source file
Using report templates
Related Reference
Additional EGL report handler functions
EGL library ReportLib
EGL report handler
Predefined EGL report handler functions