Olá pessoal!
Bem, estou desenvolvendo uma aplicação web aqui com essas coisas: JSF2 + GlassFish v3 + Facelets. Estou tentando gerar um pdf de um boleto (JRimum), porém na hora da geração estou recebendo do GF o erro “getOutputStream() has already been called for this response”. Olhando outros tópicos no fórum, observei vários exemplos de problemas com quebra de linha nos JSP’s, porém como não estou usando JSP aqui, eu travei neste erro… Segue o código:
/**
* Método que transmite varios boletos contidos em uma lista
* para download em formato PDF com várias páginas.
*/
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)
context.getExternalContext().getResponse();
try {
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;filename=boletos.pdf");
OutputStream output = response.getOutputStream();
output.write(groupInOnePDF(listaBoletos)); //o groupInOnePDF retorna um byte[]
response.flushBuffer();
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
JsfUtil.addErrorMessage("Erro ao criar arquivo de boleto: "+e.getMessage());
}
Para poder escrever no OutputStream (output.write) precisamos instanciar antes um OutputStream à partir do response, correto? Porém, no mesmo controller eu não tenho nenhuma outra chamada do tipo OutputStream, a não ser neste local…
alguma sugestão?
Desde já agradeço.