1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Relatório não é gerado

Estou tentando gerar um simples relatório, no ireport ele é gerado sem problemas, mas quando rodo ele no eclipse nada é gerado, nem mesmo um pdf vazio, e o pior não recebo mensagens de erro no console. Seguem os códigos: xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:namespace="http://java.sun.com/jsf/composite/namespace"
    xmlns:sec="http://www.springframework.org/security/facelets/tags">
<!-- 
        Replace path to template, title, header and body
        with actual data.
     -->
<ui:composition template="Template.xhtml">
    <ui:define name="content">
        <div class="content_wrapper">
            <div class="content">
                <sec:ifAnyGranted roles="ROLE_ADMINISTRADOR,ROLE_USUARIO,ROLE_GERENCIADOR">




                    <h:form id="formGrid">
                    Data Inicial: <p:calendar id="popup" value="#{relatorioHistoricoMB.dataInicial}" />
                    Data Final: <p:calendar id="popup2" value="#{relatorioHistoricoMB.dataFinal}" />
                    <p:selectOneMenu value="#{relatorioHistoricoMB.reservatorio.idReservatorio}"
                        style="width:170px" required="true"
                        requiredMessage="Selecione algum.">
                        <f:selectItem itemLabel="Selecione o Reservatório" itemValue="0" />
                        <f:selectItems value="#{relatorioHistoricoMB.listaReservatorio}"
                            var="reservatorio" itemLabel="#{reservatorio.nomeReservatorio}"
                            itemValue="#{reservatorio.idReservatorio}" />
                    </p:selectOneMenu>
                    <p:commandButton value="Gerar relatório" update="formGrid"
                        actionListener="#{relatorioHistoricoMB.executar}" />

                        <p:dataTable id="Grid" var="historico"
                            value="#{HistoricoBean.listaHistorico}"
                            selection="#{HistoricoBean.historico}" selectionMode="single"
                            rowKey="#{historico.idHistorico}" paginator="true" rows="5">
                            <f:facet name="header">
                                <h:outputText value="Historico" />
                            </f:facet>
                            <p:column headerText="Reservatorio">
                                <f:facet name="header">
                                    <h:outputText value="Reservatorio" />
                                </f:facet>
                                <h:outputText value="#{historico.reservatorio.nomeReservatorio}" />
                            </p:column>


                            <p:column headerText="Bomba">
                                <f:facet name="header">
                                    <h:outputText value="Bomba" />
                                </f:facet>
                                <h:outputText value="#{historico.bomba.nomeBomba}" />

                            </p:column>

                            <p:column headerText="Data">
                                <f:facet name="header">
                                    <h:outputText value="Data" />
                                </f:facet>
                                <h:outputText value="#{historico.dataHistorico}" />
                            </p:column>

                            <p:column headerText="Evento">
                                <f:facet name="header">
                                    <h:outputText value="Evento" />
                                </f:facet>
                                <h:outputText value="#{historico.novoStatusHistorico}" />
                            </p:column>


                        </p:dataTable>
                    </h:form>
                </sec:ifAnyGranted>
            </div>
        </div>
    </ui:define>
</ui:composition>
</html>

Bean

package br.com.auttec.monitora.relatorios;

import java.awt.Image;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.swing.ImageIcon;

import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import br.com.auttec.monitora.bean.*;
import br.com.auttec.monitora.dao.*;
import br.com.auttec.monitora.regraNegocio.*;

@ManagedBean(name = "relatorioHistoricoMB")
@SessionScoped
public class RelatorioHistoricoMB {
    private Date dataInicial;
    private Date dataFinal;
    private Reservatorio reservatorio = new Reservatorio();
    private HistoricoCrudAnnotations historicoDAO = new HistoricoCrudAnnotations();
    private List<Reservatorio> listaReservatorio = new ArrayList<>();
    private ReservatorioCrudAnnotations reservatorioDAO = new ReservatorioCrudAnnotations();

    public void executar() throws Exception {
        List<Historico> ListaHistorico = new ArrayList<Historico>();

        HistoricoCrudAnnotations HistoricoDAO = new HistoricoCrudAnnotations();
        ListaHistorico = HistoricoDAO.listar();
        int x = ListaHistorico.size();
        Historico2[] ListaHistorico2 = new Historico2[x];
        List<Historico2> Historico = new ArrayList<Historico2>();
        GregorianCalendar dataCal = new GregorianCalendar();
        dataCal.setTime(dataInicial);
        int mesInicial = (dataCal.get(Calendar.MONTH))+1;
        dataCal.setTime(dataFinal);
        int mesFinal = (dataCal.get(Calendar.MONTH))+1;
        System.out.println("MÉTODO EXECUTAR");
        for (int i = 0; i < ListaHistorico.size(); i++) {
            String mesBanco = historicoDAO.listar().get(i).getDataHistorico()
                    .substring(3, 5);
            int mesBancoi = Integer.parseInt(mesBanco);
            System.out.println("Mês inicial: "+mesInicial);
            System.out.println("Mês Final: "+mesFinal);
            System.out.println("Mês Banco: "+mesBancoi);
            System.out.println("Reservatório: "+reservatorio.getIdReservatorio());
            System.out.println("Reservatório da lista: "+ListaHistorico.get(i).getReservatorio().getIdReservatorio());
            if ((mesBancoi >= mesInicial)
                    && (mesBancoi <= mesFinal)
                    && (reservatorio.getIdReservatorio() == ListaHistorico
                            .get(i).getReservatorio().getIdReservatorio()))

            {
                ListaHistorico2[i] = new Historico2();
                ListaHistorico2[i].setIdHistorico(ListaHistorico.get(i)
                        .getIdHistorico());
                ListaHistorico2[i].setNomeBomba(ListaHistorico.get(i)
                        .getBomba().getNomeBomba());
                ListaHistorico2[i].setNomeReservatorio(ListaHistorico.get(i)
                        .getReservatorio().getNomeReservatorio());
                ListaHistorico2[i].setNovoStatusHistorico(ListaHistorico.get(i)
                        .getNovoStatusHistorico());
                ListaHistorico2[i].setDataHistorico(ListaHistorico.get(i)
                        .getDataHistorico());
                ListaHistorico2[i].setObsReservatorio(ListaHistorico.get(i)
                        .getReservatorio().getObsReservatorio());
                Historico.add(ListaHistorico2[i]);
            }
        }
        System.out.println("HISTORICO"+Historico.get(0).getNovoStatusHistorico());
        JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(
                Historico, false);
        Map<String, Object> parameterMap = new HashMap<String, Object>();
        Image logo = new ImageIcon(getClass().getResource("Logo.png"))
                .getImage();
        parameterMap.put("logo", logo);
        ReportUtil.executarRelatorio("/WEB-INF/jasper/Rhistorico2.jasper",
                parameterMap, "RelatorioHistorico", beanCollectionDataSource);
    }

    public Date getDataInicial() {
        return dataInicial;
    }

    public void setDataInicial(Date dataInicial) {
        this.dataInicial = dataInicial;
    }

    public Date getDataFinal() {
        return dataFinal;
    }

    public void setDataFinal(Date dataFinal) {
        this.dataFinal = dataFinal;
    }

    public Reservatorio getReservatorio() {
        return reservatorio;
    }

    public void setReservatorio(Reservatorio reservatorio) {
        this.reservatorio = reservatorio;
    }

    public HistoricoCrudAnnotations getHistoricoDAO() {
        return historicoDAO;
    }

    public void setHistoricoDAO(HistoricoCrudAnnotations historicoDAO) {
        this.historicoDAO = historicoDAO;
    }

    public List<Reservatorio> getListaReservatorio() {
        return listaReservatorio = reservatorioDAO.listar();
    }

    public void setListaReservatorio(List<Reservatorio> listaReservatorio) {
        this.listaReservatorio = listaReservatorio;
    }

    public ReservatorioCrudAnnotations getReservatorioDAO() {
        return reservatorioDAO;
    }

    public void setReservatorioDAO(ReservatorioCrudAnnotations reservatorioDAO) {
        this.reservatorioDAO = reservatorioDAO;
    }

}
package br.com.auttec.monitora.relatorios;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;




import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;


@ManagedBean (name="MBReportUtil")
@SessionScoped

public class ReportUtil {
     private static String ERRO_MENSAGEM_REPORT = "Um erro ocorreu quando o relatório estava sendo executado.";

        //executa o relatório através de um JRBeanCollectionDataSource
        public static void executarRelatorio(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, JRBeanCollectionDataSource fonteDados) throws Exception{

            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

            //pega o caminho do arquivo .jasper da aplicação
            InputStream reportStream = (InputStream) context.getExternalContext().getResourceAsStream(caminhoRelatorio);


            response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
            response.setContentType("application/download");
            response.setHeader("Pragma", "no-cache");
            try {
                System.out.println("------Inicio Try!-------");     
                ServletOutputStream servletOutputStream = response.getOutputStream();


                //envia parametros para o relatório
                if (parametros == null){
                    parametros = new HashMap<String, Object>();
                }

                //envia para o navegador o PDF gerado
                JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
                servletOutputStream.flush();
                servletOutputStream.close();

                System.out.println("-----Passou Flush e Close!-----");

            } catch (JRException e) {
                e.printStackTrace();
                try {
                    throw new Exception(ERRO_MENSAGEM_REPORT);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
                try {
                    throw new Exception(ERRO_MENSAGEM_REPORT);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }finally{
                context.responseComplete();
            }
        }

        //executa o relatório através de uma Conexao
        public static void executarRelatorioConexao(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel, java.sql.Connection connection) throws Exception{

            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

            //pega o caminho do arquivo .jasper da aplicação
            InputStream reportStream = (InputStream) context.getExternalContext().getResourceAsStream(caminhoRelatorio);


            response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
            response.setContentType("application/download");
            response.setHeader("Pragma", "no-cache");
            try {
                System.out.println("------Inicio Try!-------");
                ServletOutputStream servletOutputStream = response.getOutputStream();


                //envia parametros para o relatório
                if (parametros == null){
                    parametros = new HashMap<String, Object>();
                }

                //envia para o navegador o PDF gerado
                JasperRunManager.runReportToPdf(caminhoRelatorio, parametros, connection);
                servletOutputStream.flush();
                servletOutputStream.close();

                System.out.println("-----Passou Flush e Close!-----");

            } catch (JRException e) {
                e.printStackTrace();
                try {
                    throw new Exception(ERRO_MENSAGEM_REPORT);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
                try {
                    throw new Exception(ERRO_MENSAGEM_REPORT);
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }finally{
                context.responseComplete();
            }
        }

}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ireport ou faça a sua própria pergunta.