Visualizar Relatorio IReport - Ajuda

1 resposta
J

Tenho uma aplicaçao JSF, onde estou fazendo os meus relatorios, consigo exportar, e AS VEZES consigo visualizar, as vezes nao. Isso na minha maquina, ou seja em desenvolvimento, já no Cliente, nao funciona, nao consigo visualizar nenhuma vez, so exportar.

esse é o meu codigo.

Informa qual vai ser o relatorio e os parametros, caso houver

Map parameters = new HashMap();
            parameters.put("ifornecedor", campo.getFornecedor());
            parameters.put("data1", campo.getDtInicial());
            parameters.put("data2", campo.getDtFinal());
            parameters.put("scabecalho", filtro);

            RelatorioPadrao.criaRel("RelAvaliacoes.jasper", parameters);

Gera o relatorio.

private static FacesContext context;
    private static ServletContext servletContext;
    private static String caminhoRelatorio;

    public static void criaRel(String caminho, Map parametrs) throws JRException {
        try {
            context = FacesContext.getCurrentInstance();
            servletContext = (ServletContext) context.getExternalContext().getContext();

            caminhoRelatorio = servletContext.getRealPath("WEB-INF/classes/Relatorios/" + "/" + caminho);

            JasperPrint relat = JasperFillManager.fillReport(caminhoRelatorio, parametrs, Conexao.Conecta());
            

            ResultSet rs = Conexao.Consulta("select exportarelatorio, caminhoexporta from admleite.leite_configuracoes");
            boolean bExporta = false;
            String caminhoExporta = null;

            while (rs.next()){
                bExporta = rs.getBoolean("exportarelatorio");
                caminhoExporta = rs.getString("caminhoexporta");
            }
            
            if (bExporta){
            // exportacao do relatorio para outro formato, no caso PDF
            JasperExportManager.exportReportToPdfFile(relat,
                    caminhoExporta + "/" + caminho.replace(".jasper", "") + ".pdf");
            }

            JasperViewer.viewReport(relat, true);

        } catch (Exception e) {
            FacesMessage msg = new FacesMessage(
                    "Erro ao gerar relatório. " + e.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

Para a exportaçao, pra PDF, funciona legal, exporta direitinho, sem erro algum, porém para a visualizaçao em desenvolvimento as vezes funciona, e em cliente nao visualiza.
Nao sei se estou usando o getRealPath() e é isso que está causando o erro…

Estou com todas as libs do IReport na aplicaçao e o meu .war está sendo compilado com o .jasper dos relatorios junto, ou seja, está indo pro cliente tudo, preciso ter o IReport instalado no cliente? ou preciso ter os relatorios separados no cliente??

Alguma dica para como resolver esse problema??

1 Resposta

R

Bem, posso estar errado, mas na web não dah certo você pre-visualizar o relatório como quer, apenas no desktop, na web sempre gere relatorios em formato pdf para o cliente.

Criado 17 de março de 2011
Ultima resposta 17 de mar. de 2011
Respostas 1
Participantes 2