在 Jasper Reports 中添加 json subDataSource 的正确方法是什么?
What's the proper way of adding a json subDataSource in Jasper Reports?
我有这个 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 core 在 repo "com.fasterxml.jackson.core"
而 iReport 一直要求 "org.codehaus.jackson.core"
。
尝试寻找 org.codehaus 下的旧版本 jackson 核心并将它们添加到 iReport 类路径,但它仍然不起作用。
有什么想法吗?
通常你不需要转换表达式。
尝试:<![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("workSiteRows")]]>
这对我来说效果很好。
在您的情况下,subDataSource 是一个数组,也许您也可以尝试使用对象。
我有这个 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 core 在 repo "com.fasterxml.jackson.core"
而 iReport 一直要求 "org.codehaus.jackson.core"
。
尝试寻找 org.codehaus 下的旧版本 jackson 核心并将它们添加到 iReport 类路径,但它仍然不起作用。 有什么想法吗?
通常你不需要转换表达式。
尝试:<![CDATA[$P{REPORT_DATA_SOURCE}.subDataSource("workSiteRows")]]>
这对我来说效果很好。 在您的情况下,subDataSource 是一个数组,也许您也可以尝试使用对象。