Ajuda com erro de ireports

Java

03/06/2013

Olá pessoal, tudo bem? estou tendo um pequeno problema aqui, e necessito mto de uma ajuda hehe
Vamos lá

Criei um relatório no ireports e exportei o .jasper para meu projeto

Tenho uma classe utilitaria que gostaria de chamar para exibir o relatório conforme segue

public class RelatorioUtils {

    
    //executar relatório através de um JRBeanCollectionDataSource
    public static void executaRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, JRBeanCollectionDataSource fonteDados){
        
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse)context.getExternalContext().getResponse();
        
        //pegar o caminho do arquivo .jasper
        InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
        
        response.setContentType("application/pdf");
        
        response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf\"");
        response.setContentType("application/download");
        response.setHeader("Pragma", "no-cache");
        
        try{
            ServletOutputStream servletOutputStream = response.getOutputStream();
            
            //envia parametros para o relatorio
            if(parametros==null){
                parametros = new HashMap<String, Object>();
            }
            
            //enviar para o navegador o pdf gerado
            JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros,fonteDados);
            servletOutputStream.flush();
            servletOutputStream.close();
            
        }catch(JRException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            context.responseComplete();
        }
       
    }
    
}


meu método dentro do meu bean

 public void executarRelatorioViaturas(){
        relatorios = fabrica.getServicoConsulta(FabricaServicos.RELATORIO).
                consultar(ServicoConsulta.RELATORIOS, ConsultaRelatorio.RELATORIOS);
            
        JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(relatorios);
        RelatorioUtils.executaRelatorio("/admin/relatorios/report1.jasper", null, "relatorio", fonteDados);
        
    }


bom o caso eh o seguinte

nesse segundo metodo meu objeto relatorios eh um arraylist q esta vindo devidamente preenchido
mas na hora de chamar
da esse erro aqui

java.lang.IllegalStateException: PWC3991: getOutputStream() has already been called for this response

alguem pode dar um help do q se trata?
Jilles Ragonha

Jilles Ragonha

Curtidas 0
POSTAR