JSF + IReport [Urgentissimo]

5 respostas
anderson.bonavides

Pessoal to tentando fazer a integração do JSF com o IReport mas não to conseguindo. Está sendo lançado um java.lang.IllegalStateException.

Este é meu método que adiciona as informações para ser passado pro relatório.
public List<Racas> gerarListRaca() {
        RacaBean raca = new RacaBean();
        Racas racas;
        List<Racas> listaRacas = new ArrayList<Racas>();       
        for (Iterator<Racas> it = raca.getRacasCadastradas().iterator(); it.hasNext();) {
            racas = it.next();            
            racas = new Racas(racas.getCodigoRaca(),racas.getDescricaoRaca());
            listaRacas.add(racas);
        }
        return listaRacas;
    }

Neste método a exceção é lançada:

public JasperPrint gerarRelatorio(Collection<Racas> lista) {
        JasperPrint jasperPrint = null;
        String path = "/WEB-INF/relatorio/raca/RelatorioGeralRacas.jasper";
        String REAL_PATH = getRealPath(path);

        if (lista != null) {
            JRDataSource jrds = new JRBeanCollectionDataSource(lista);
            File reportFile = new File(REAL_PATH);
            try {
                HashMap parameters = new HashMap();
                jasperPrint = JasperFillManager.fillReport(reportFile.getPath(), parameters, jrds);
            } catch (JRException e) {
                System.out.println(e);
            }
        }
        return jasperPrint;
    }

A exceção ocorre na linha 11.

5 Respostas

elugo

eai bom cara!!

vc já experimentou verificar seu diretório?´
não estou vendo vc pegar o diretório completo path Servidor + path relatório…

anderson.bonavides

elugo:
eai bom cara!!

vc já experimentou verificar seu diretório?´
não estou vendo vc pegar o diretório completo path Servidor + path relatório…

Existem outros métodos eu posso postar ele completo caso você queira ver.

elugo

então coloca ai pq dai fica mais facil do pessoal ajudar

anderson.bonavides

Método no ManagedBean onde eu chamo a classe IReportControlRaca:

public String gerarRelatorioBrowser(){
        IReportControlRaca ir = new IReportControlRaca();
        ir.gerarRelatorioBrowser();
        return "broseer";
    }
IReportControlRaca:
public class IReportControlRaca {

    private static final int PDF_BROWSER = 0x01;
    private static final int PDF_DOWNLOAD = 0x02;
    private IReportBeanRaca ireport;

    /**
     * gerarRelatorioBrowser
     */
    public void gerarRelatorioBrowser() {
        ireport = new IReportBeanRaca();
        List<Racas> listaRaca = ireport.gerarListRaca();
        JasperPrint jasper = ireport.gerarRelatorio(listaRaca);
        exportRelatorio(jasper, "blablabla", PDF_BROWSER);
    }

    /**
     * gerarRelatorioDownload
     */
    public void gerarRelatorioDownload() {
        ireport = new IReportBeanRaca();
        List<Racas> listaRaca = ireport.gerarListRaca();
        JasperPrint jasper = ireport.gerarRelatorio(listaRaca);
        exportRelatorio(jasper, "download", PDF_DOWNLOAD);
    }

    /**
     * Gerar pdf
     * @param  jasperPrinter
     * @param mode -  que indica como deve ser gerado o pdf
     */
    public void exportRelatorio(JasperPrint jasperPrinter, String fileName, int mode) {

        try {
            // @ outputStream   
            ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
            JasperExportManager.exportReportToPdfStream(jasperPrinter,
                    pdfStream);

            HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
            // selecionando o modo que o pdf será processado
            switch (mode) {
                case PDF_BROWSER:
                    response.setContentType("application/pdf");
                    break;
                case PDF_DOWNLOAD:
                    response.setContentType("application/octet-stream");
                    response.setHeader("Content-Disposition",
                            "attachment; filename=" + fileName + ".pdf");
                    break;
                default:
            }
            response.setContentLength(pdfStream.size());
            ServletOutputStream flusher;
            flusher = response.getOutputStream();
            pdfStream.writeTo(flusher);
            flusher.flush();
            flusher.close();
            FacesContext.getCurrentInstance().responseComplete();
            pdfStream.close();
            pdfStream = null;

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

E por ultimo a classe IReportBeanRaca:

public class IReportBeanRaca {

    /**
     * gerarRelatorio
     */
    public JasperPrint gerarRelatorio(List<Racas> lista) {
        JasperPrint jasperPrint = null;
        String path = "/WEB-INF/relatorio/raca/RelatorioGeralRacas.jasper";
        String REAL_PATH = getRealPath(path);

        if (lista != null) {
            JRDataSource jrds = new JRBeanCollectionDataSource(lista);
            File reportFile = new File(REAL_PATH);
            try {
                HashMap parameters = new HashMap();
                jasperPrint = JasperFillManager.fillReport(reportFile.getPath(), parameters, jrds);
            } catch (JRException e) {
                System.out.println(e);
            }
        }
        return jasperPrint;
    }

    /**
     * Gerar lista com Alunos 
     */
    public List<Racas> gerarListRaca() {
        RacaBean raca = new RacaBean();
        List<Racas> listaRacas = new ArrayList<Racas>();       
        for (Iterator<Racas> it = raca.getRacasCadastradas().iterator(); it.hasNext();) {
           Racas racas = new Racas();
           racas = it.next();            
           listaRacas.add(racas);
        }
        return listaRacas;
    }

    /**
     * Retorna o real path
     */
    public static String getRealPath(String pathReport) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ServletContext context = (ServletContext) facesContext.getExternalContext().getContext();
        return context.getRealPath(pathReport);
    }
}

elugo agradeço pela força.

Grato!

elugo

ai anderson da uma olhada nesse post http://www.javafree.org/javabb/topic-870555-RelatorioHibernate+Annotations+JSF+iReport
espero que t ajude

Criado 24 de novembro de 2008
Ultima resposta 24 de nov. de 2008
Respostas 5
Participantes 2