quinta-feira, 2 de setembro de 2010

Retorno de relatório Jasper no Faces

Para retornar um relatório ao usuário pela web:

Código do Botão


                    action="#{empresaBean.imprimir}" />

Código do método

    public String imprimir() {
        FacesContext context = getContext();
        try {
            HttpServletResponse response = (HttpServletResponse) context
            .getExternalContext().getResponse();

            ServletOutputStream responseStream;
            responseStream = response.getOutputStream();
            String pathJasper = ((ServletContext) context.getExternalContext()
                    .getContext()).getRealPath("/WEB-INF/relatorios/")
                    + "/ArcheionEmpresas.jasper";
            Relatorio relatorio = empresaBO.getRelatorio(
                    new HashMap(), pathJasper);
            relatorio.exportarParaPdfStream(responseStream);

            response.setContentType("application/pdf");
            response.setHeader("Content-disposition",
            "filename=\"RelacaoEmpresa.pdf\"");
            responseStream.flush();
            responseStream.close();
            context.renderResponse();
            context.responseComplete();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JRException e) {
            e.printStackTrace();
        } catch (AccessDeniedException aex) {
            return Constants.ACCESS_DENIED;
        } 

        return findAll();
    }


Nenhum comentário: