Pessoal,
Peguei alguns exemplos na net, inclusive aqui no GUJ sobre como chamar relatórios pdf (jasper) em JSF.
O meu problema é que não dá nenhum erro, mas quando mando gerar o relatório também não acontece nada… já debuguei e passa por todos os processos corretamente, só não apresenta o relatório.
O último teste que fiz foi com esse método (que peguei aqui:http://benignosales.wordpress.com/2011/03/13/jsf-2-0-primefaces-ireport/
) :
public void imprimeRelatorio() {
HashMap parameters = new HashMap();
parameters.put("nome", "Flavio Andrade");
try {
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.responseComplete();
ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
JREmptyDataSource ds = new JREmptyDataSource();
JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getRealPath("/WEB-INF/relatorios/historico_com_parametros.jasper"), parameters, ds);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
exporter.exportReport();
byte[] bytes = baos.toByteArray();
if (bytes != null && bytes.length > 0) {
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"relatorioPorData.pdf\"");
response.setContentLength(bytes.length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(bytes, 0, bytes.length);
outputStream.flush();
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
Meu log do GlassFish após a execução do método é simplesmente nada. :shock:
Alguém saberia me dizer o que pode estar ocorrendo?
Desconfio do meu SO (linux) pode ser? afinal como disse esse não é o primeiro método que pego para fazer isso, e todos os outros aconteceu a mesma coisa.
cara hoje chego cedo em casa so pra testar isto, mais antes vou comprar uns rojões