我有这个json DS:
{
"customername":"home",
"workSiteRows":[
{
"invoiceRows":[
{
"candidateName":"name1",
"units":"13:00"
},
{
"candidateName":"name2",
"units":"18:30"
}
],
"workSiteName":"wsname1"
},
{
"invoiceRows":[
{
"candidateName":"name1",
"units":"13:00"
},
{
"candidateName":"name2",
"units":"18:30"
}
],
"workSiteName":"wsname2"
}
]
}
在我的.jrxml文件中,我定义了一个子报告,并且我试图创建一个subDataSource来传递给这个子报告。
<subreport isUsingCache="false">
<reportElement x="0" y="10" width="555" height="30" uuid="b2d96c34-ad5d-4eb2-b218-43aad4e09282" />
<dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).dataSource("workSiteRows")]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{REPORT_DIR} + "\\invoice_ws_row.jasper"]]></subreportExpression>
</subreport>
我一直收到以下异常: 填写打印错误...
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonNode java.lang.ClassNotFoundException: org.codehaus.jackson.JsonNode
的答案
但它不起作用。
问题是目前jackson核心位于回购"com.fasterxml.jackson.core"
而iReport一直要求"org.codehaus.jackson.core"
。
尝试寻找org.codehaus下的旧版jackson核心,并将它们添加到iReport类路径中,但它仍然不起作用。 有什么想法吗?
答案 0 :(得分:1)
通常你不需要转换表达式。
尝试:<![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("workSiteRows")]]>
在我的情况下这很好用。 在你的情况下,subDataSource是一个数组,也许你也可以尝试使用一个对象。