Pass as parameter to Jasper an Object

Asked

Viewed 670 times

1

I’m trying to create a report, now it’s already generating, but only when I pass Jasperprint the Jremptydatasource().

JasperPrint impressoraJasper = JasperFillManager.fillReport("D:/Edital.jasper", parametros, new JREmptyDataSource());

It creates the edict but with all the null fields. So I tried to create an Array with my Bean, but I was unsuccessful, because within iReport I used 3 classes with Inner joins. And I can’t get through 3 different Bs.

In my Managedbean I have a Notice object already filled out, and my report only receives a single parameter, which is the ID of this notice. Do I really need a datasource? It is with it that I have a problem. How do I pass only this ID to Jasper and it generate my announcement?

My code:

public void imprimirRelatorio() throws IOException, ParseException {

    HashMap parametros = new HashMap();
    parametros.put("ID_EDITAL", edital.getIdEdital());
    FacesContext facesContext = FacesContext.getCurrentInstance();

    try {

        Edital[] beanArray = new Edital[1];
        beanArray[0] = edital;  

        JRBeanArrayDataSource dsColecao1 = new JRBeanArrayDataSource(beanArray, false);

       JasperPrint impressoraJasper = JasperFillManager.fillReport("D:/Edital2.jasper", parametros, dsColecao1);

        File pdf = new File("relatorio2.pdf");
        pdf.createNewFile();
        FileOutputStream arquivo = new FileOutputStream(pdf);
        System.out.println(pdf.getAbsolutePath());

        JasperExportManager.exportReportToPdfStream(impressoraJasper, arquivo);

        arquivo.flush();
        arquivo.close();  

    } catch (JRException e) {
        e.printStackTrace();
    }          
}

EDIT: I did a report that uses only one bean (without Inner joins), put that bean in an array with a single position, and it worked. Now how to put the rest of the Beans?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.