First, download jasper report source project in this article I use jasper 5.6.0 and download from this link : http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.0/jasperreports-5.6.0-project.zip/download After download extract the file and go to sample directory (jasperreports-5.6.0\demo\samples) from command prompt / shell terminal and compile using ant (ant.apache.org). To compile the sample just run : ant
Copy files from folder jasperreports-5.6.0\demo\samples\webapp\applets :
- commons-collections-3.2.1.jar
- commons-logging-1.1.1.jar
- jasperreports-applet-5.6.0.jar
- JRViewerSimple.class
- EmbeddedViewerApplet.class
Copy to web-app\applets folder (in our grails project)
Create a controller that send an octet-stream, my controller :
import javax.servlet.ServletOutputStream import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; class LaporanController { def dataSource def embedbarang() { String namaFile, reportName, dotJasper namaFile = "barang" reportName = grailsApplication.getMainContext().getResource('reports/' + namaFile + '.jrxml').file.getAbsoluteFile() dotJasper = grailsApplication.getMainContext().getResource('reports/' + namaFile + '.jasper').file.getAbsoluteFile() // compiles jrxml JasperCompileManager.compileReportToFile(reportName); // fills compiled report with parameters and a connection // JasperPrint print = JasperFillManager.fillReport(reportName + ".jasper", parameters, connection); JasperPrint print = JasperFillManager.fillReport(dotJasper, null, dataSource.getConnection()); response.setContentType("application/octet-stream"); ServletOutputStream outputStream = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outputStream); oos.writeObject(print); oos.flush(); oos.close(); outputStream.flush(); outputStream.close(); } }Load the applet from .gsp file :
For copy-paste purpose :
<APPLET CODE = "EmbeddedViewerApplet.class" codebase="${request.contextPath}/applets" ARCHIVE = "jasperreports-applet-5.6.0.jar,commons-logging-1.1.1.jar,commons-collections-3.2.1.jar" WIDTH = "100%" HEIGHT = "600"></XMP>
<PARAM NAME = CODE VALUE = "EmbeddedViewerApplet.class" >
<PARAM NAME = CODEBASE VALUE = "${request.contextPath}/applets" >
<PARAM NAME = ARCHIVE VALUE = "jasperreports-applet-5.6.0.jar,commons-logging-1.1.1.jar,commons-collections-2.1.1.jar" >
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.2.2">
<PARAM NAME="scriptable" VALUE="false">
<PARAM NAME = "REPORT_URL" VALUE ="${request.contextPath}/laporan/embedbarang">
</APPLET>
NB:
- Since Java 7 update 51 we need to add an execption to run the applet https://www.java.com/en/download/exception_sitelist.jsp
- Add the necessary .jar files to lib folder in our grails project folder, like the previous article : http://ezsnippet.blogspot.com/2014/07/grails-using-jasper-report-without.html