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 的信息。想法?
这被标记为重复项,但重复项并没有解决我遇到的问题。
我需要将数据传递给子报表,数组中的每个条目都会传递到一个单独的子报表。我可以解决这个问题,可能,如所描述的,但要求是子报告。