vtlkzmn Posted July 4, 2018 Share Posted July 4, 2018 I'm struggling with generating JasperReport using Java. DataSource is not taken into account, so all the values are null and subReport is not shown.I've created JSONDataAdapter with option 'Use the report JSON expression when filling the report' from the JSON pasted below. When compiling it from Jasper Studio it is creating report correctly, while trying to compile it from Java leads to empty report (only field names shown) without subReport at all. Please help with this issue.{ "user": { "firstName": "Mike", "lastName": "Jones", "email": "mikeJones@gmail.com", "userStatus": "VALIDATED", "documentList": [ { "id": 2, "documentType": "DRIVING_LICENSE", "documentStatus": "APPROVED", "comment": "", "events": [ { "action": "APPROVE", "comment": "", "createDate": "2018-05-24T10:44:55.987+0000" } ] }, { "id": 1, "documentType": "PASSPORT", "documentStatus": "APPROVED", "comment": "", "events": [ { "action": "APPROVE", "comment": "", "createDate": "2018-05-24T10:44:55.901+0000" } ] } ] }}main.jrxml<?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 --><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="Blank_A4_7" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ed8211ff-fccf-451c-9a4e-0b2075ebdfee"> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="DataAdapter1.xml"/> <queryString language="json"> <![CDATA[user]]> </queryString> <field name="firstName" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="firstName"/> <fieldDescription><![CDATA[firstName]]></fieldDescription> </field> <field name="lastName" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="lastName"/> <fieldDescription><![CDATA[lastName]]></fieldDescription> </field> <field name="email" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="email"/> <fieldDescription><![CDATA[email]]></fieldDescription> </field> <field name="userStatus" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="userStatus"/> <fieldDescription><![CDATA[userStatus]]></fieldDescription> </field> <field name="documentList" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="documentList"/> <fieldDescription><![CDATA[documentList]]></fieldDescription> </field> <background> <band splitType="Stretch"/> </background> <title> <band height="79" splitType="Stretch"/> </title> <pageHeader> <band height="35" splitType="Stretch"/> </pageHeader> <columnHeader> <band height="35" splitType="Stretch"> <staticText> <reportElement x="-7" y="0" width="100" height="30" uuid="85f69194-56d8-413f-a550-1884c6c2ffdd"> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="03de927f-90a6-4a3b-b435-78f511e83566"/> </reportElement> <text><![CDATA[firstName]]></text> </staticText> <staticText> <reportElement x="99" y="0" width="100" height="30" uuid="97a45c99-e11f-466e-83a9-0ee3125a888a"> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="e2dcce70-e78a-454f-897b-5961f5b060d7"/> </reportElement> <text><![CDATA[lastName]]></text> </staticText> </band> </columnHeader> <detail> <band height="277" splitType="Stretch"> <textField> <reportElement x="-10" y="0" width="100" height="30" uuid="d2158da3-7029-46b7-87e5-73dff198aa5c"> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="03de927f-90a6-4a3b-b435-78f511e83566"/> </reportElement> <textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression> </textField> <textField> <reportElement x="100" y="0" width="100" height="30" uuid="ffe6c4e3-0584-4ff0-bb85-8bc1c586424f"> <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="e2dcce70-e78a-454f-897b-5961f5b060d7"/> </reportElement> <textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression> </textField> <subreport> <reportElement x="-7" y="30" width="557" height="60" uuid="05a4dede-97de-4836-9195-114755ff921a"/> <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("documentList")]]></dataSourceExpression> <subreportExpression><![CDATA["subreport.jasper"]]></subreportExpression> </subreport> </band> </detail> <columnFooter> <band height="45" splitType="Stretch"/> </columnFooter> <pageFooter> <band height="54" splitType="Stretch"/> </pageFooter> <summary> <band height="42" splitType="Stretch"/> </summary></jasperReport>subreport.jrxml<?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 --><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="Blank_A4_4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f841d01d-b1ed-4398-9c3a-85751cabd974"> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="DataAdapter1.xml"/> <queryString language="json"> <![CDATA[user.documentList]]> </queryString> <field name="id" class="java.lang.Integer"> <property name="net.sf.jasperreports.json.field.expression" value="id"/> <fieldDescription><![CDATA[id]]></fieldDescription> </field> <field name="documentType" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="documentType"/> <fieldDescription><![CDATA[documentType]]></fieldDescription> </field> <field name="documentStatus" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="documentStatus"/> <fieldDescription><![CDATA[documentStatus]]></fieldDescription> </field> <field name="comment" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="comment"/> <fieldDescription><![CDATA[comment]]></fieldDescription> </field> <field name="events" class="java.lang.String"> <property name="net.sf.jasperreports.json.field.expression" value="events"/> <fieldDescription><![CDATA[events]]></fieldDescription> </field> <background> <band splitType="Stretch"/> </background> <detail> <band height="36" splitType="Stretch"> <textField> <reportElement x="-7" y="5" width="100" height="30" uuid="b904bfb3-ac61-4141-bbd4-813aa6101945"/> <textFieldExpression><![CDATA[$F{documentType}]]></textFieldExpression> </textField> <textField> <reportElement x="120" y="3" width="100" height="30" uuid="85c25658-8388-4eb0-ae5b-b376ce801d0f"/> <textFieldExpression><![CDATA[$F{documentStatus}]]></textFieldExpression> </textField> </band> </detail></jasperReport>Test.javapublic class Test { public static void main(String[] args) { try { String pathToReports = "/home/test/"; Map<String, Object> params = new HashMap<>(); params.put(JsonQueryExecuterFactory.JSON_DATE_PATTERN, "yyyy-MM-dd"); params.put(JsonQueryExecuterFactory.JSON_NUMBER_PATTERN, "#,##0.##"); params.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH); params.put(JRParameter.REPORT_LOCALE, Locale.US); JRDataSource jsonDataSource = new JsonDataSource(new File("/home/test/example.json")); JasperReport jasperReport = JasperCompileManager.compileReport(pathToReports + "main.jrxml"); JasperCompileManager.compileReportToFile(pathToReports + "subreport.jrxml", "subreport.jasper"); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, jsonDataSource); JasperExportManager.exportReportToPdfFile(jasperPrint, "/home/test/test.pdf"); } catch (Exception e) {} }} Link to comment Share on other sites More sharing options...
venu.dvmr Posted July 30, 2018 Share Posted July 30, 2018 Update main.jrxml as below and try. 1. Delete the field doucmentList since this not at String it is a JSONArray 2. Update the subreport -> dataSourceExpression to "user.documentList" Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now