iReport com JSF

0 respostas
D

Ola pessoal
Como faço para executar um relatorio PDF dentro de um MBean ?

Consegui atraves do seguinte codigo executar dentro de um servlet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        InputStream isReport = this.getClass().getResourceAsStream("/br/com/banstur/seguranca/resources/jr/rptDepartamentos.jasper");
        try {
            JasperReport jrReport = (JasperReport)JRLoader.loadObject(isReport);
            Collection c = (Collection)request.getSession().getAttribute("session.Deparatamentos");
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(c);
            Map parameters = new HashMap();
            byte[] bytes = JasperRunManager.runReportToPdf(jrReport , parameters, ds);
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            try {
                ServletOutputStream outputStream = response.getOutputStream();
                outputStream.write(bytes, 0, bytes.length);
                outputStream.flush();
                outputStream.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        } catch (JRException e) {
            
        }
    }

Dentro do MBean eu consigo manipular a Request e a Response atraves do FacesContext.
Porém o browser chega ate a iniciar o acrobat internamente mas da arquivo corrompido.
Tem alguma tecnica para adaptar este codigo dentro do Mbean, pois o problema é a saida do método do mBean que é acionado apartir de um commandbutton e retorna um outcome.

Criado 22 de novembro de 2007
Respostas 0
Participantes 1