Jasper reports 列表<;对象>;作为子报表的JRBeanCollectionDataSource

Jasper reports 列表<;对象>;作为子报表的JRBeanCollectionDataSource,jasper-reports,Jasper Reports,我正在将列表作为JRBeanCollectionDataSource传递给子报表。这里的对象类型为A和B。对象类型A有两个属性:名称和地址,对象类型

我正在将列表作为JRBeanCollectionDataSource传递给子报表。这里的对象类型为
A
B
。对象类型
A
有两个属性:
名称
地址
,对象类型
位置
属性

如果对象的类型为
A
,则我必须在子报表中显示
名称
地址
。如果它的类型是
B
,那么我必须在子报表中显示
位置

我必须访问子报表中的对象类型,这意味着属于哪种类型(
a
B
)?。 我试了很多,但没有找到任何解决办法

谁能帮帮我吗。 提前感谢。

您有很多选择:

首先:在两个对象中放置一个标志字段,说明该对象是a还是B。
然后在子报表表达式中使用如下三元语句:

objectType=="ObjectA"?"subreportA.jasper":"subreportB.jasper"
Second:将子报告名称作为对象本身内的字段传递。
然后在子报表表达式中使用如下字段:

$F{subReportName}
Third:生成两个子报告,每个子报告都由自己的类型填充。若要显示“子报表A”,则填充ObjectA并将ObjectB列表保留为空。在Jasper中,如果填充列表为
NULL
,则不会呈现子报表。

您有许多选项:

首先:在两个对象中放置一个标志字段,说明该对象是a还是B。
然后在子报表表达式中使用如下三元语句:

objectType=="ObjectA"?"subreportA.jasper":"subreportB.jasper"
Second:将子报告名称作为对象本身内的字段传递。
然后在子报表表达式中使用如下字段:

$F{subReportName}
Third:生成两个子报告,每个子报告都由自己的类型填充。若要显示“子报表A”,则填充ObjectA并将ObjectB列表保留为空。在Jasper中,如果填充列表为
NULL
,则不会呈现子报表