我是 jasper 报告的新手。
我正在尝试从子文件生成 pdf,其中包含一些信息,例如 name
、class
等和数组 marks
。我正在尝试将标记数组呈现为表格。我的 JSON 是
{"data": {"name" : "Johny",
"class" : "A2",
"sub" : "cs",
"interest" : "films",
"marks" : [{
"subject" : "Maths",
"mark" : "24",
"grade" : "A",
"remarks" : "",
"slNo" : "1"
},
{
"subject" : "English",
"mark" : "24",
"grade" : "A",
"remarks" : "",
"slNo" : "2"
},
]
}}
我已将子数据源表达式指定为
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></dataSourceExpression>
完整 jrxml - Here
现在我从 java 中调用这些,
File jsonFile = new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/Marks.Json");
JasperDesign jasperDesign = JRXmlLoader.load(new File("/Volumes/Johny/Work/EclipseWorkspace/SecondReport/res/First.jrxml"));
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
parameters.put(JsonQueryExecuterFactory.JSON_INPUT_STREAM, new FileInputStream(jsonFile));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters);
JasperExportManager.exportReportToPdfFile(jasperPrint, "/Users/johnykutty/Desktop/Sample2.pdf");
其他字段正在填充,但表值变为空。
最佳答案
从 here 找到答案
问题是我必须在 dataSourceExpression
中传递数组的 key 。因此,dataSourceExpression
应该类似于
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("marks")]]></dataSourceExpression>
注意 subDataSource()
方法的“marks”参数
关于java - 表字段的 JsonDataSource 获取空 Jasper 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157569/