Boa noite amigos !
Estou com um probleminha chato de resolver, não trabalhei com relatórios ainda e logo de cara estou tentando fazer um em JPA, implementei algumas coisa, porém ainda não funcionaram.
Seguinte toda vez que mando gerar um relatório pela aplicação, o mesmo retorna um mensagem que o relatório não tem nenhuma página. Testei no ireport e funciona, somente na aplicação web que não estou conseguindo. (Acho que estou comendo bronha, porém sou novo nisto). Detalhe: o relatório recebe dois parametros dataInicial dataFinal.
Segue abaixo os códigos caso alguém consiga me ajudar.
Abraços
Everson
package br.com.agenda.bean;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.ServletContext;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.query.JRJpaQueryExecuterFactory;
import net.sf.jasperreports.view.JasperViewer;
import br.com.agenda.infra.JPAUtil;
@ManagedBean
@ViewScoped
public class RelatorioMB {
// private Date dataInicial;
// private Date dataFinal;
private FacesContext context;
private String caminhoRelatorio;
private Date dataInicial;
private Date dataFinal;
public void geraRelatorio() {
try {
context = FacesContext.getCurrentInstance();
ServletContext sc = (ServletContext) context.getExternalContext()
.getContext();
caminhoRelatorio = sc.getRealPath("/relatorios/contatos.jasper");
Map hints = new HashMap();
hints.put("dataInicial", dataInicial);
hints.put("dataFinal", dataFinal);
Map parameters = new HashMap();
EntityManager em = new JPAUtil().getEntityManager();
parameters.put(
JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, em);
parameters.put(
JRJpaQueryExecuterFactory.PARAMETER_JPA_QUERY_HINTS_MAP,
hints);
JasperRunManager.runReportToPdfFile(caminhoRelatorio, parameters);
System.out.println("Gerando relatório");
JasperPrint jasperPrint = JasperFillManager.fillReport(
caminhoRelatorio, parameters);
JasperViewer.viewReport(jasperPrint);
} catch (Exception e) {
e.printStackTrace();
}
}
public FacesContext getContext() {
return context;
}
public void setContext(FacesContext context) {
this.context = context;
}
public String getCaminhoRelatorio() {
return caminhoRelatorio;
}
public void setCaminhoRelatorio(String caminhoRelatorio) {
this.caminhoRelatorio = caminhoRelatorio;
}
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;
}
}
<h:body>
<h:form id="font_um">
<h:panelGrid id="display" columns="4" cellpadding="4"
style="margin:0;">
<f:facet name="header">
<h:outputText value="Informações" />
</f:facet>
<h:outputText value="Data Inicial" />
<p:calendar value="#{relatorioMB.dataInicial}" label="inicio">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>
<h:outputText value="Data Inicial" />
<p:calendar value="#{relatorioMB.dataFinal}" label="fim">
<f:convertDateTime pattern="dd/MM/yyyy" />
</p:calendar>
<p:commandButton value="Relatório"
action="#{relatorioMB.geraRelatorio}" image="ui-icon-document"
immediate="false" ajax="false" />
</h:panelGrid>
</h:form>
</h:body>