我是iReport的新手,我必须创建一份PDF报告。
使用JavaBean DataSource,您可以包装JavaBeans的数组(或集合),但我只需要传递一个对象(只有一个JavaBean实例)。我的意思是,我必须在我的报告中显示java bean的属性。
我该怎么做?我有点困惑,我必须传递一个只有一个项目的数组?
答案 0 :(得分:14)
您可以使用 JRBeanArrayDataSource 或 JRBeanCollectionDataSource 将bean传递给报告,也可以使用参数Map。
JasperPrint reportPrint = JasperFillManager.fillReport(
this.getClass().getClassLoader().getResourceAsStream("/report.jasper"),
new HashMap<String,Object>(),
new JRBeanArrayDataSource(new YourBean[]{yourBean}));
或
Map<String,Object> params = new HashMap<String,Object>();
params.put("yourBean", yourBean);
JasperPrint reportPrint = JasperFillManager.fillReport(
this.getClass().getClassLoader().getResourceAsStream("/report.jasper"),
params, new JREmptyDataSource());
答案 1 :(得分:1)
如果您想使用预定义的Jasper Reports类,那么是。 JRAbstractBeanDataSource
的默认实现仅限于处理数组或集合。所以你可以创建一个元素数组或一个元素集合。
替代方法是实现您自己的JRAbstractBeanDataSource
版本,该版本会隐藏next()
和moveFirst()
方法,但这似乎是一项愚蠢的工作量。获得所需行为的直接方式。
答案 2 :(得分:0)
即使您只有一个bean,仍然可以使用集合数据源。在这种情况下,集合将只有1个对象。如果使用正确的分组创建报表设计,则稍后可以使用此报表显示具有各自属性的多个类。