Estou desenvolvendo uma aplicação web e gostaria de gerar relatórios de algumas tabelas. Enfim, eu já consigo gerar um relatório de uma consulta simples, onde o usuário somente clica em um botão na minha pagina .xhtml e ele gera um relatório com base em uma consulta. Só que eu queria gerar um relatório passando alguns parâmetros na minha pagina .xhtml.
Se alguém possuir um tutorial ou souber uma forma simples de explicar ficarei muito grato.
publicvoidgerarPDF()throwsJRException,IOException{EntityManagerem=newJPAUtil().getEntityManager();Queryquery=em.createQuery("select a from Apropriar a");List<ModeloRelApropriacao>lista=(List<ModeloRelApropriacao>)query.getResultList();JRBeanCollectionDataSourcebeanCollection=newJRBeanCollectionDataSource(lista);StringreportPath=FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/report1.jasper");JasperPrintjasperPrint=JasperFillManager.fillReport(reportPath,newHashedMap(),beanCollection);HttpServletResponsehttpServlet=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();httpServlet.addHeader("Content-disposition","attachment; filename=apropriacoes.pdf");ServletOutputStreamservletOutputStream=httpServlet.getOutputStream();JasperExportManager.exportReportToPdfStream(jasperPrint,servletOutputStream);FacesContext.getCurrentInstance().responseComplete();}
Em vez de eu passar um new HashedMap eu faço um HashedMap de parametros e na minha consulta eu coloco as condições where e and ?
erico_kl
geralmente você só vai utilizar HashMap quando você precisar de algum dado que não seja pertinente aos dados iterados no relatório…
Imagine um relatório que liste os carros de uma revenda… filtros por marca, modelo, ano etc. são mandados para sua SQL, enquanto o título do relatório, por exemplo, pode ser passado no HashMap
R
raf4ever
Depende,que parâmetros são esses que vc quer passar pro relatório?
L
luis.feitoza
select a from Apropriar a
Então com base na consulta acima, eu possuo nessa consulta um campo chamado data. Ai no meu formulário eu pesso para o usuário informar a data para poder gerar o relatório.
Ai no caso minha consulta ficaria assim ?
Apropriar apropriar = new Apropriar();
select a from Apropriar a where a.data = "apropriar.getData"
Isto ?
R
raf4ever
luis.feitoza:
select a from Apropriar a
Então com base na consulta acima, eu possuo nessa consulta um campo chamado data. Ai no meu formulário eu pesso para o usuário informar a data para poder gerar o relatório.
Ai no caso minha consulta ficaria assim ?
Apropriar apropriar = new Apropriar();
select a from Apropriar a where a.data = "apropriar.getData"