Boa tarde Senhores!
Estou desenvolvendo um sistema que gera um relatorio iReport, após o usuario clicar no botao de finalização é exibido na tela um popup com as opções de salvar o arquivo ou exibir um PDF, até ai tudo bem, o PDF é exibido e ou o arquivo é salvo com sucesso, o problema é que apos essa ação, a aplicação trava…não redireciona para a pagina desejada e nem permite nenhuma ação (o codigo-fonte da tela fica vazio). segue o método que gera o PDF:
[code] public void imprimirContrato(BeneficiariaVo beneficiaria, ProdutoVo produto, RepresentanteVo representante, List portadores, long codProposta, int tipoOperacao) {
FacesContext context = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();
String pathLogo = servletContext.getRealPath("/images/");
List<DadosRelatorioVo> parametros = GeraRelatorio.retornarDadosRelatorio(pathLogo, beneficiaria, produto, representante, portadores, codProposta, tipoOperacao);
List<PortadorVo> subParametros = new ArrayList<PortadorVo>();
JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(parametros);
subParametros.addAll(portadores);
JRBeanCollectionDataSource subJrds = new JRBeanCollectionDataSource(subParametros);
try {
String pathJasper = servletContext.getRealPath("/reports/Contrato.jasper");
String pathSubReport = servletContext.getRealPath("/reports/subRelatorioPortadores.jasper");
JasperPrint impressao = new JasperPrint();
// parametros do subrelatorio
Hashtable ht = new Hashtable();
ht.put("portadores", subJrds);
ht.put("subDir", pathSubReport.replace("\\", "/"));
impressao = JasperFillManager.fillReport(pathJasper, ht, jrds);
byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
// Essa é a configuração do pop´up que será apresentado
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
ServletOutputStream ouputStream = response.getOutputStream();
response.addHeader("Content-disposition", "attachment;filename=Contrato" + codProposta + ".pdf");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
// Esse popula o arquivo que será aberto ou salvo
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
response.flushBuffer();
context.responseComplete();
} catch (Exception ex) {
ex.printStackTrace();
FacesUtils.addErrorModalMessage(ex.getMessage());
irConsultar();
}
}[/code]
só para informar, a versão do iReport é 0.5.0. Alguem ja passou por esse mesmo problema?