Ireport使用Beans对List进行子报告

Dav*_*ton 3 jasper-reports ireport

我正在使用bean对象作为数据源.数据源包含几个属性 - 其中一个是我尝试使用的行项列表.通过bean看起来像这样:

String name;
String address;
List<DetailRecord> records;
Run Code Online (Sandbox Code Playgroud)

我希望将记录显示为报告中的详细信息行.我知道我需要设置子报告,但我不确定如何设置子报告以使用当前父数据项的记录元素作为数据源.

Dav*_*ton 6

好的..我想出了我需要做的事情.对于子报告,我需要以这种方式指定数据源:

 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{records})
Run Code Online (Sandbox Code Playgroud)

这里有几个"Gotcha's"让我陷入了一段时间:

  • 您必须使用完整的类名(仅使用JRBeanCollectionDataSource)将无法正常工作
  • 在主报表中,您必须将记录类型设置为java.util.list(或相应的类).

我的尝试一直在轰炸(没有明显的错误),因为父级中的记录字段默认为String.一旦我将其更改为列表,事情就开始起作用了.