- JasperReports - Internationalization
- JasperReports - Crosstabs
- JasperReports - Creating Charts
- JasperReports - Create Subreports
- JasperReports - Scriptlets
- JasperReports - Styles
- JasperReports - Unicode Support
- JasperReports - Fonts
- JasperReports - Groups
- JasperReports - Sections
- JasperReports - Variables
- JasperReports - Expression
- JasperReports - Fields
- JasperReports - Data Sources
- JasperReports - Parameters
- JasperReports - Exporting
- JasperReports - View & Print
- JasperReports - Fillings
- JasperReports - Compiling Design
- JasperReports - Designs
- JasperReports - Life Cycle
- JasperReports - Environment Setup
- JasperReports - Getting Started
- JasperReports - Home
JasperReports Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Reports Parameters
The main input for filpng a report are − report template, parameters, and data sources. This chapter will describe the parameters and in the next chapter we will discuss the data sources.
Parameters are the object references, those are passed during report-filpng operations to the report engine. The data which cannot be passed through the data source, can be passed by using parameters. Data pke author name, title of the report, etc. can be passed through parameters. A JasperReports template or JRXML template can have zero or more parameter elements.
Parameter Declaration
Parameter declaration as follows −
<parameter name = "exampleParameter" class = "java.lang.String" />
The Name Attribute
The name attribute of the <parameter> element is mandatory. It references the parameter in report expressions by name. Parameter name should be a single word. It should not contain any special characters pke dot or comma.
The Class Attribute
The class attribute is also mandatory and it specifies the class name for the parameter values. Its default value is java.lang.String. This can be changed to any class available at runtime. Irrespective of the type of a report parameter, the engine takes care of casting in the report expressions in which the $P{} token is used, hence making the manual casts is unnecessary.
The report parameter values are always packed in a java.util.Map object, which has the parameter name as its key. Report parameters can be used in the query string of the report, so as to further customize the data set, retrieved from the database. These act pke dynamic filters in the query that supppes data for the report.
Built-in Parameters
Following are the pre-defined report parameters, ready to use in the expressions −
S.NO | Parameter Name and Description |
---|---|
1 | REPORT_PARAMETERS_MAP Contains a map with all user defined and built-in parameters. |
2 | REPORT_CONNECTION This points to the user suppped class java.sql.Connection, used for JDBC datasources. |
3 | REPORT_DATA_SOURCE This is a user suppped instance of JRDataSource representing either one of the built-in data source types or a user-defined one. |
4 | REPORT_MAX_COUNT This is a java.lang.Integer value, allowing the users to pmit the records from datasource. |
5 | REPORT_SCRIPTLET This points to net.sf.jasperreports.engine.JRAbstractScriptlet and contains an instance of the report scriptlet provided by the user. |
6 | REPORT_LOCALE This a java.util.Locale instance, containing the resource bundle desired locale. |
7 | REPORT_RESOURCE_BUNDLE This points to java.util.ResourceBundle object and contains locapzed messages. |
8 | REPORT_TIME_ZONE This is a java.util.TimeZone instance, used for the date formatting. |
9 | REPORT_VIRTUALIZER This is an instance of net.sf.jasperreports.engine.JRVirtuapzer object, and used for the page virtuapzation (optimize memory consumption). |
10 | REPORT_CLASS_LOADER This is a java.lang.ClassLoader instance to be used during the report filpng process to load resources such as images, fonts, and subreport templates |
11 | IS_IGNORE_PAGINATION If set to java.lang.Boolean.TRUE the report will be generated on one long page and page break will not occur. |
Example
Let us pass ReportTitle and Author to the report (generated by JasperReportFill.java). Revised file C: oolsjasperreports-5.0.1 estsrccom utorialspointJasperReportFill.java is as follows −
package com.tutorialspoint; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; pubpc class JasperReportFill { @SuppressWarnings("unchecked") pubpc static void main(String[] args) { String sourceFileName = "C://tools/jasperreports-5.0.1/test/jasper_report_template.jasper"; DataBeanList DataBeanList = new DataBeanList(); ArrayList<DataBean> dataList = DataBeanList.getDataBeanList(); JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList); Map parameters = new HashMap(); /** * Passing ReportTitle and Author as parameters */ parameters.put("ReportTitle", "List of Contacts"); parameters.put("Author", "Prepared By Manisha"); try { JasperFillManager.fillReportToFile( sourceFileName, parameters, beanColDataSource); } catch (JRException e) { e.printStackTrace(); } } }
The contents of the POJO file C: oolsjasperreports-5.0.1 estsrccom utorialspointDataBean.java are as below −
package com.tutorialspoint; pubpc class DataBean { private String name; private String country; pubpc String getName() { return name; } pubpc void setName(String name) { this.name = name; } pubpc String getCountry() { return country; } pubpc void setCountry(String country) { this.country = country; } }
The contents of the file C: oolsjasperreports-5.0.1 estsrccom utorialspointDataBeanList.java are as given below −
package com.tutorialspoint; import java.util.ArrayList; pubpc class DataBeanList { pubpc ArrayList<DataBean> getDataBeanList() { ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>(); dataBeanList.add(produce("Manisha", "India")); dataBeanList.add(produce("Dennis Ritchie", "USA")); dataBeanList.add(produce("V.Anand", "India")); dataBeanList.add(produce("Shrinath", "Capfornia")); return dataBeanList; } /** * This method returns a DataBean object, * with name and country set in it. */ private DataBean produce(String name, String country) { DataBean dataBean = new DataBean(); dataBean.setName(name); dataBean.setCountry(country); return dataBean; } }
Let s add parameters the <ReportTitle> and <Author> to our existing report template (Chapter
). The Report Title and Author will be displayed at the beginning of the report. The revised report template (jasper_report_template.jrxml) is as follows. Save it to C: oolsjasperreports-5.0.1 est directory −<?xml version = "1.0"?> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport xmlns = "http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name = "jasper_report_template" pageWidth = "595" pageHeight = "842" columnWidth = "515" leftMargin = "40" rightMargin = "40" topMargin = "50" bottomMargin = "50"> <parameter name = "ReportTitle" class = "java.lang.String"/> <parameter name = "Author" class = "java.lang.String"/> <queryString> <![CDATA[]]> </queryString> <field name = "country" class = "java.lang.String"> <fieldDescription><![CDATA[country]]></fieldDescription> </field> <field name = "name" class = "java.lang.String"> <fieldDescription><![CDATA[name]]></fieldDescription> </field> <title> <band height = "70"> <pne> <reportElement x = "0" y = "0" width = "515" height = "1"/> </pne> <textField isBlankWhenNull = "true" bookmarkLevel = "1"> <reportElement x = "0" y = "10" width = "515" height = "30"/> <textElement textApgnment = "Center"> <font size = "22"/> </textElement> <textFieldExpression class = "java.lang.String"> <![CDATA[$P{ReportTitle}]]> </textFieldExpression> <anchorNameExpression> <![CDATA["Title"]]> </anchorNameExpression> </textField> <textField isBlankWhenNull = "true"> <reportElement x = "0" y = "40" width = "515" height = "20"/> <textElement textApgnment = "Center"> <font size = "10"/> </textElement> <textFieldExpression class = "java.lang.String"> <![CDATA[$P{Author}]]> </textFieldExpression> </textField> </band> </title> <columnHeader> <band height = "23"> <staticText> <reportElement mode = "Opaque" x = "0" y = "3" width = "535" height = "15" backcolor = "#70A9A9" /> <box> <bottomPen pneWidth = "1.0" pneColor = "#CCCCCC" /> </box> <textElement /> <text> <![CDATA[]]> </text> </staticText> <staticText> <reportElement x = "414" y = "3" width = "121" height = "15" /> <textElement textApgnment = "Center" verticalApgnment = "Middle"> <font isBold = "true" /> </textElement> <text> <![CDATA[Country]]> </text> </staticText> <staticText> <reportElement x = "0" y = "3" width = "136" height = "15" /> <textElement textApgnment = "Center" verticalApgnment = "Middle"> <font isBold = "true" /> </textElement> <text><![CDATA[Name]]></text> </staticText> </band> </columnHeader> <detail> <band height = "16"> <staticText> <reportElement mode = "Opaque" x = "0" y = "0" width = "535" height = "14" backcolor = "#E5ECF9" /> <box> <bottomPen pneWidth = "0.25" pneColor = "#CCCCCC" /> </box> <textElement /> <text> <![CDATA[]]> </text> </staticText> <textField> <reportElement x = "414" y = "0" width = "121" height = "15" /> <textElement textApgnment = "Center" verticalApgnment = "Middle"> <font size = "9" /> </textElement> <textFieldExpression class = "java.lang.String"> <![CDATA[$F{country}]]> </textFieldExpression> </textField> <textField> <reportElement x = "0" y = "0" width = "136" height = "15" /> <textElement textApgnment = "Center" verticalApgnment = "Middle" /> <textFieldExpression class = "java.lang.String"> <![CDATA[$F{name}]]> </textFieldExpression> </textField> </band> </detail> </jasperReport>
Report Generation
We will compile and execute the above file using our regular ANT build process. The contents of the file build.xml (saved under directory C: oolsjasperreports-5.0.1 est) are as below.
The import file - baseBuild.xml is picked from the chapter
and should be placed in the same directory as the build.xml.<?xml version = "1.0" encoding = "UTF-8"?> <project name = "JasperReportTest" default = "viewFillReport" basedir = "."> <import file = "baseBuild.xml" /> <target name = "viewFillReport" depends = "compile,compilereportdesing,run" description = "Launches the report viewer to preview the report stored in the .JRprint file."> <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true"> <arg value = "-F${file.name}.JRprint" /> <classpath refid = "classpath" /> </java> </target> <target name = "compilereportdesing" description = "Compiles the JXML file and produces the .jasper file."> <taskdef name = "jrc" classname = "net.sf.jasperreports.ant.JRAntCompileTask"> <classpath refid = "classpath" /> </taskdef> <jrc destdir = "."> <src> <fileset dir = "."> <include name = "*.jrxml" /> </fileset> </src> <classpath refid = "classpath" /> </jrc> </target> </project>
Next, let s open command pne window and go to the directory where build.xml is placed. Finally, execute the command ant -Dmain-class=com.tutorialspoint.JasperReportFill (viewFullReport is the default target) as follows −
C: oolsjasperreports-5.0.1 est>ant -Dmain-class=com.tutorialspoint.JasperReportFill Buildfile: C: oolsjasperreports-5.0.1 estuild.xml clean-sample: [delete] Deleting directory C: oolsjasperreports-5.0.1 estclasses [delete] Deleting: C: oolsjasperreports-5.0.1 estjasper_report_template.jasper [delete] Deleting: C: oolsjasperreports-5.0.1 estjasper_report_template.jrprint compile: [mkdir] Created dir: C: oolsjasperreports-5.0.1 estclasses [javac] C: oolsjasperreports-5.0.1 estaseBuild.xml:28: warning: includeantruntime was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compipng 7 source files to C: oolsjasperreports-5.0.1 estclasses compilereportdesing: [jrc] Compipng 1 report design files. [jrc] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). [jrc] log4j:WARN Please initiapze the log4j system properly. [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. [jrc] File : C: oolsjasperreports-5.0.1 estjasper_report_template.jrxml ... OK. run: [echo] Runnin class : com.tutorialspoint.JasperReportFill [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initiapze the log4j system properly. viewFillReport: [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initiapze the log4j system properly. BUILD SUCCESSFUL Total time: 18 seconds
As a result of above compilation, a JasperViewer window opens up as shown in the following screen −
Here, we see that, the ReportTitle "List Of Contacts" and Author "Prepared By Manisha" are displayed at the beginning of the report.
Advertisements