ilaz ilaz - 5 months ago 37
Java Question

One object (java bean) as data source on iReport (JasperReports)

I'm new in iReport and I have to create a PDF report.

With a JavaBean DataSource you wrap an array (or collection) of JavaBeans but I only need to pass an object (only one instance of a JavaBean). I mean, I have to show in my report the properties of a java bean.

How can I do this? I'm a little bit confused, I have to pass an array with only one item?

Answer

You can pass your bean to the report using a JRBeanArrayDataSource or JRBeanCollectionDataSource or you can use the parameters Map.

JasperPrint reportPrint = JasperFillManager.fillReport(
        this.getClass().getClassLoader().getResourceAsStream("/report.jasper"),
            new HashMap<String,Object>(), 
                 new JRBeanArrayDataSource(new YourBean[]{yourBean}));

or

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());