【发布时间】:2019-09-06 20:26:00
【问题描述】:
Jasper 报告和子表有问题。
我正在使用以下 JSON 格式:
[
{
"dataObjects": [
{
"objectId": "025b3873ebe640aa9d6a34f9306548ae",
"employeeFullName": "John Smith",
"employeeGrade": "GS12"
},
{
"objectId": "08b9300f62dc498f86c675ac5897b4c9",
"employeeFullName": "Bill Johnson",
"employeeGrade": "GS14"
}
]
},
{
"dataObjects": [
...
]
},
{
"dataObjects": [
...
]
},
{
"dataObjects": [
...
]
}
]
数据以四个 JSON 对象的数组形式返回。每个对象都包含 .dataObjects 下的查询结果
在这种情况下,我需要能够将这些数据显示为四个单独的子报表、图表。
在数组的情况下,我没有看到将数据从父报表传递到子报表的方法。
重新格式化数据给了我:
{
"report0": {
"dataObjects": [
{
"objectId": "025b3873ebe640aa9d6a34f9306548ae",
"employeeFullName": "John Smith",
"employeeGrade": "GS12"
},
{
"objectId": "08b9300f62dc498f86c675ac5897b4c9",
"employeeFullName": "Bill Johnson",
"employeeGrade": "GS14"
}
],
},
"report1": {
"dataObjects": [
...
]
},
"report2": {
"dataObjects": [
...
]
},
"report3": {
"dataObjects": [
...
]
}
}
使用这个可以正常工作:
<subreport>
<reportElement x="20" y="10" width="260" height="260" uuid="6a319da0-bd78-4f44-8445-e03b9a62cc0f"/>
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("report0.dataObjects")]]></dataSourceExpression>
<subreportExpression><![CDATA["quad_1.jrxml"]]></subreportExpression>
</subreport>
但我需要能够在不重新处理数据的情况下做到这一点,我需要这样的东西,但它不起作用:
<subreport>
<reportElement x="20" y="10" width="260" height="260" uuid="6a319da0-bd78-4f44-8445-e03b9a62cc0f"/>
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("[0].dataObjects")]]></dataSourceExpression>
<subreportExpression><![CDATA["quad_1.jrxml"]]></subreportExpression>
</subreport>
广泛的谷歌搜索没有发现任何关于使用 json-list 的信息。想法?
这被标记为重复,但该重复并没有解决我遇到的问题。
我需要将数据传递给子报表,数组中的每个条目都转到一个单独的子报表。如前所述,我可以解决该问题,但要求是子报表。
【问题讨论】:
-
Alex,我看了那个,另一个建议重复。似乎没有人能解决我遇到的问题。我需要将数据传递给子报表,数组中的每个条目都转到一个单独的子报表。如前所述,我可以解决这个问题,但要求是子报表。
标签: json jasper-reports subreport