Olá
trabalho com jsf e primefaces e não consigo fazer com que seja gerado um pdf quando no botão deixo o ajax como true, o método é percorrido por inteiro mas no final não acontece nada, quanto coloco ajax=false, ai ele gera o pdf normal, todos os outros métodos como, salvar, alterar, excluir funcionam com ajax true, menos o imprimir, tem como resolver isso?
código botão imprimir:
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
HashMap<String, Object> map = new HashMap<String, Object>();
SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yyyy");
String caminho = "/relatorios/";
String subPasta = caminho + "certidao/";
String relatorio = "";
List<Certidao> certidoes = new ArrayList<Certidao>();
certidoes.add(certidao);
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(certidoes);
relatorio = subPasta + "Certidao.jasper";
map.put("SUBREPORT_DIR", context.getExternalContext().getRealPath(subPasta) + File.separator);
map.put("BRASAO_DIR", context.getExternalContext().getRealPath(caminho) + File.separator);
String fileName = "attachment;filename=certidao.pdf";
response.setHeader("Content-disposition", fileName);
InputStream reportStream = context.getExternalContext().getResourceAsStream(relatorio);
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
if (reportStream == null
|| servletOutputStream == null
|| map == null
|| fonteDados == null) {
return "Não foi possivel imprimir.";
}
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, map, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException ex) {
return ex.getMessage();
} catch (IOException ex) {
return ex.getMessage();
} finally {
context.responseComplete();
}
return SUCESSO;