Bom dia pessoal!
Bom, tenho o seguinte ambiente:
NetBeans 6.5, JSF 1.2, Facelets, jaspereports (com iReport 3.0) e RichFaces 3.3.1.
Em certo ponto do meu sistema preciso gerar um relatório, com o jasper e exibi-lo em um ModalPanel do RichFaces.
O que consegui fazer, até agora, foi abrir esse relatório em outra aba do navegador, bonitinho.
Mas ainda estou empacado em como abri-lo no ModalPanel, pra dar um efeito mais profissional a aplicação.
Alguém tem alguma idéia de como isso pode ser feito?!
Aqui está o código que o abre em outra aba:
...
//criação do data...
...
JRDataSource ds = new JRBeanArrayDataSource(data);
/* Informa o parâmetro do diretório real da aplicação
* para as imagens no relatório.
*/
String realPathImg = ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/img/");
parameters.put("pathImages", realPathImg);
String realPath = ((ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext()).getRealPath("/WEB-INF/classes/reportFile/relatorioCompraVenda.jasper");
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(realPath);
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
PrintWriter printWriter = response.getWriter();
JRHtmlExporter htmlExporter = new JRHtmlExporter();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, ds);
response.setContentType("text/html");
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
htmlExporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
htmlExporter.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER, printWriter);
htmlExporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "image?image=");
htmlExporter.exportReport();
FacesContext.getCurrentInstance().responseComplete();
Chamada do método:
...
<h:commandButton image="/img/Printer_Picture45x.png" styleClass="btnBottom" id="cmdBtnPrintOrder"
disabled="#{GeracaoPedidoCompraBean.activeBtn}" action="#{GeracaoPedidoCompraBean.imprimirPedido}"
onclick="document.getElementById('formOrderGenerate:outputLinkOrder').click();"/>
<h:outputLink id="outputLinkOrder" target="_blank" rendered="false">gerar</h:outputLink>
...
Qualquer idéia será de grande ajuda!
Abraços!