我是iReport中的新成员,我必须创建PDF报告。作为iReport(JasperReports)上的数据源的一个对象(java bean)
用一个JavaBean DataSource包装一个JavaBean的数组(或集合),但我只需要传递一个对象(只有一个JavaBean的实例)。我的意思是,我必须在我的报告中显示java bean的属性。
我该怎么做?我有点困惑,我只能通过一个数组只有一个项目?
我是iReport中的新成员,我必须创建PDF报告。作为iReport(JasperReports)上的数据源的一个对象(java bean)
用一个JavaBean DataSource包装一个JavaBean的数组(或集合),但我只需要传递一个对象(只有一个JavaBean的实例)。我的意思是,我必须在我的报告中显示java bean的属性。
我该怎么做?我有点困惑,我只能通过一个数组只有一个项目?
您可以使用JRBeanArrayDataSource或JRBeanCollectionDataSource你的bean传递报告,或者您可以使用参数映射。
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());
它的工作原理。谢谢。 – ilazgo 2012-02-09 10:19:04
我该如何访问bean的特定属性?你的bean将是我理解的一个参数。但让我们说它有documentTypes int [],我想在报告中显示。我不打包通过现场/参数报告? – 2013-06-19 10:25:09
@manocha_ak您可以在报告中调用'$ P {yourBean} .getDocumentTypes()'或'$ P {yourBean} .getDocumentTypes()[0]'。 'yourBean'参数需要在'iReport'中作为参数类'YourBean'。 – dcernahoschi 2013-06-19 11:23:59
如果你想使用预定义的Jasper Reports类,那么是的。 JRAbstractBeanDataSource
的默认实现仅限于处理数组或集合。所以你可以创建一个元素数组或一个元素集合。
另一种方法是,以实现自己的JRAbstractBeanDataSource
该存根出next()
和moveFirst()
方法的版本,但这似乎是工作的无聊的量做时,有一个直接的方式获得所需的行为。
即使你只有一个bean时,你仍然可以使用收集的数据源。在这种情况下,集合将只有1个对象。如果您使用正确的分组创建报表设计,则此报表可以稍后用于显示具有各自属性的多个类。
您可以在这里找到示例[http://jasperreports.sourceforge.net/sample.reference/datasource/index.html#javabeandatasources) – 2012-01-27 20:20:22