我有这个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文件中,我定义了一个子报表,并试图创建一个子DataSource传递给这个子报表。
<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
我试着用问题的答案http://community.jaspersoft.com/questions/956036/caused-javalangclassnotfoundexception-orgcodehausjacksonjsonnode-exception-ireport
但它不起作用。问题是目前jackson core正在回购"com.fasterxml.jackson.core"
而iReport一直在请求CCD_ 2。
尝试查找org.codehaus下的旧版本的jackson内核,并将其添加到iReport类路径中,但仍然不起作用。有什么想法吗?
通常不需要强制转换表达式。尝试:<![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("workSiteRows")]]>
这对我来说很好。在您的情况下,subDataSource是一个数组,也许您也可以尝试使用一个对象。