Alo galera, tenho um programa de escola feito com spring security, JSF, primefaces e JAVA e base de dados mysql.
Tenho uma datatable que mostra todos dados de todos estabelecimentos que tenho na base de dados.
Gostaria de carregar a pagina pela primeira vez e a tabela aparecer por padrao filtrada pelo nome de uma das colunas nao importa qual seja so preciso da logica.
INvestiguei sobre o filterby mas o filter by mostra-me um campo para eu filtrar depois da tabela aparecer. Eu quero que a tabela apareca ja filtrada.
POR FAVOR AJUDA AEEEEEEEEEEEEEE
OBRIGADO
CLASSE DAO
package mz.co.mpteventos.springsecurity.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.criteria.CriteriaQuery;
import mz.co.mpteventos.springsecurity.model.Conta;
import mz.co.mpteventos.springsecurity.model.Estabelecimento;
public class DAO {
private final Class<T> classe;
public DAO(Class<T> classe) {
this.classe = classe;
}
public void adiciona(T t) {
// consegue a entity manager
EntityManager em = new JPAUtil().getEntityManager();
// abre transacao
em.getTransaction().begin();
// persiste o objeto
em.persist(t);
// commita a transacao
em.getTransaction().commit();
// fecha a entity manager
em.close();
}
public void remove(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.remove(em.merge(t));
em.getTransaction().commit();
em.close();
}
public void removeNaLista(List<T> t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
for (int i = 0; i < t.size(); i++) {
em.remove(em.merge(t.get(i)));
}
em.getTransaction().commit();
em.close();
}
public void atualiza(T t) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.merge(t);
em.getTransaction().commit();
em.close();
}
public List<T> listaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).getResultList();
em.close();
return lista;
}
public T buscaPorId(Integer id) {
EntityManager em = new JPAUtil().getEntityManager();
T instancia = em.find(classe, id);
em.close();
return instancia;
}
public T buscaPorNome(String t) {
EntityManager em = new JPAUtil().getEntityManager();
T instancia = em.find(classe, t);
em.close();
return instancia;
}
public int contaTodos() {
EntityManager em = new JPAUtil().getEntityManager();
long result = (Long) em.createQuery("select count(n) from evento n").getSingleResult();
em.close();
return (int) result;
}
public List<T> listaTodosPaginada(int firstResult, int maxResults) {
EntityManager em = new JPAUtil().getEntityManager();
CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
query.select(query.from(classe));
List<T> lista = em.createQuery(query).setFirstResult(firstResult).setMaxResults(maxResults).getResultList();
em.close();
return lista;
}
}
minha tabela
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition template="_template.xhtml">
<ui:define name=“titulo”>
Visualizar Estabelecimentos
</ui:define>
<ui:define name="conteudo">
<h:form id="formulario">
<p:growl id="msgs" showDetail="true" autoUpdate="true" />
<p:fieldset legend="Visualizar Estabelecimentos" >
<p:dataTable id="basicDT" var="estabelecimento" value="#{estabelecimentoBean.listaEstabelecimentos}" paginator="true" rows="10" >
<p:column headerText="Nome" sortBy="#{estabelecimento.nomeEstabelecimento}" filterBy="#{estabelecimento.nomeEstabelecimento}">
<h:outputText value="#{estabelecimento.nomeEstabelecimento}" />
</p:column>
<p:column headerText="Avenida" sortBy="#{estabelecimento.local.avenida}" filterBy="#{estabelecimento.local.avenida}">
<h:outputText value="#{estabelecimento.local.avenida}" />
</p:column>
<p:column headerText="Telefone">
<h:outputText value="#{estabelecimento.contacto.telefone}" />
</p:column>
<p:column headerText="Celular">
<h:outputText value="#{estabelecimento.contacto.celular_principal}" />
</p:column>
<p:column headerText="Email">
<h:outputText value="#{estabelecimento.contacto.email}" />
</p:column>
<p:column headerText="Usuario" filterBy="#{estabelecimento.conta.nome}" filterMatchMode="startsWith" filterValue="#{userDetailServiceImpl.usuarioLogado}">
<h:outputText value="#{estabelecimento.conta.nome}" />
<f:event type="preRenderComponent" listener="#{bean.execute()}"/>
</p:column>
<p:column style="width:32px">
<p:commandButton update=":formulario:estabelecimentoDetail :formulario:estabelecimentoDetail1 :formulario:msgs"
oncomplete="PF('estabelecimentoDialog').show()" icon="ui-icon-search"
title="View">
<f:setPropertyActionListener value="#{estabelecimento}"
target="#{estabelecimentoBean.estabelecimentoSelecionado}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:dialog header="Estabelecimento Info" widgetVar="estabelecimentoDialog" modal="true"
showEffect="fade" hideEffect="fade" resizable="true">
<p:outputPanel id="estabelecimentoDetail">
<p:panelGrid>
<h:graphicImage library="img" name="fotoestabelecimentos.png" height="200" style="position: relative; left: 130px"/>
</p:panelGrid>
<p:panelGrid columns="4"
rendered="#{not empty estabelecimentoBean.estabelecimentoSelecionado}"
columnClasses="label,value" >
<h:outputText value="Nome:"/>
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.nomeEstabelecimento}" />
<h:inputHidden width="1" />
<h:inputHidden width="1" />
<h:outputText value="Avenida" />
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.local.avenida}" />
<h:outputText value="Numero" />
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.local.numero}" />
<h:outputText value="Telefone" />
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.contacto.telefone}" />
<h:inputHidden width="1" />
<h:inputHidden width="1" />
<h:outputText value="Celular" />
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.contacto.celular_principal}" />
<h:inputHidden width="1" />
<h:inputHidden width="1" />
<h:outputText value="Email" />
<h:outputText value="#{estabelecimentoBean.estabelecimentoSelecionado.contacto.email}" />
<h:inputHidden width="1" />
<h:inputHidden width="1" />
</p:panelGrid>
<p:panelGrid id="estabelecimentoDetail1" columns="1"
rendered="#{not empty estabelecimentoBean.estabelecimentoSelecionado}"
columnClasses="label,value">
<p:inputTextarea value="#{estabelecimentoBean.estabelecimentoSelecionado.descricaoEstabelecimento}" cols="52" rows="10" readonly="true"/>
</p:panelGrid>
</p:outputPanel>
</p:dialog>
</p:fieldset>
</h:form>
</ui:define>
</ui:composition>
ESTABELECIMENTO BEAN`
package mz.co.mpteventos.springsecurity.bean;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import mz.co.mpteventos.springsecurity.dao.DAO;
import mz.co.mpteventos.springsecurity.model.Contacto;
import mz.co.mpteventos.springsecurity.model.Estabelecimento;
import mz.co.mpteventos.springsecurity.model.Evento;
import mz.co.mpteventos.springsecurity.model.Local;
@ManagedBean
@ViewScoped
public class EstabelecimentoBean {
private Estabelecimento estabelecimento = new Estabelecimento();
private Estabelecimento estabelecimentoSelecionado;
private List<Estabelecimento> listaEstabelecimentos;
private List<Estabelecimento> estabelecimentoSelecionados;
private List<Local> listaLocais;
private List<Contacto> listaContactos;
private List<Evento> listaeventos;
private List<Estabelecimento> listaEstabelecimentosFiltrados;
public EstabelecimentoBean() {
listaEstabelecimentos = new DAO<Estabelecimento>(Estabelecimento.class).listaTodos();
estabelecimentoSelecionados = new DAO<Estabelecimento>(Estabelecimento.class).listaTodos();
listaLocais = new DAO<Local>(Local.class).listaTodos();
listaContactos = new DAO<Contacto>(Contacto.class).listaTodos();
listaeventos = new DAO<Evento>(Evento.class).listaTodos();
}
public List<Estabelecimento> getListaEstabelecimentos() {
return listaEstabelecimentos;
}
public void setListaEstabelecimentos(List<Estabelecimento> listaEstabelecimentos) {
this.listaEstabelecimentos = listaEstabelecimentos;
}
public List<Estabelecimento> getEstabelecimentoSelecionados() {
return estabelecimentoSelecionados;
}
public void setEstabelecimentoSelecionados(List<Estabelecimento> estabelecimentoSelecionados) {
this.estabelecimentoSelecionados = estabelecimentoSelecionados;
}
public Estabelecimento getEstabelecimentoSelecionado() {
return estabelecimentoSelecionado;
}
public void setEstabelecimentoSelecionado(Estabelecimento estabelecimentoSelecionado) {
this.estabelecimentoSelecionado = estabelecimentoSelecionado;
}
public Estabelecimento getEstabelecimento() {
return estabelecimento;
}
public void setEstabelecimento(Estabelecimento estabelecimento) {
this.estabelecimento = estabelecimento;
}
public List<Local> getListaLocais() {
return listaLocais;
}
public void setListaLocais(List<Local> listaLocais) {
this.listaLocais = listaLocais;
}
public List<Contacto> getListaContactos() {
return listaContactos;
}
public void setListaContactos(List<Contacto> listaContactos) {
this.listaContactos = listaContactos;
}
public List<Evento> getListaeventos() {
return listaeventos;
}
public void setListaeventos(List<Evento> listaeventos) {
this.listaeventos = listaeventos;
}
public List<Estabelecimento> getListaEstabelecimentosFiltrados() {
return listaEstabelecimentosFiltrados;
}
public void setListaEstabelecimentosFiltrados(List<Estabelecimento> listaEstabelecimentosFiltrados) {
this.listaEstabelecimentosFiltrados = listaEstabelecimentosFiltrados;
}
}
Classe Estabelecimento
package mz.co.mpteventos.springsecurity.model;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
public class Estabelecimento {
@Id
@GeneratedValue
private Integer id;
private String nomeEstabelecimento;
private String descricaoEstabelecimento;
@Temporal(TemporalType.DATE)
private Calendar datadeOperacao = Calendar.getInstance();
@Temporal(TemporalType.DATE)
private Calendar horaDeOperacao = Calendar.getInstance();
@OneToOne
private Contacto contacto;
@OneToOne
private Local local;
@ManyToOne
private Conta conta;
//getters & setters
public Contacto getContacto() {
return contacto;
}
public void setContacto(Contacto contacto) {
this.contacto = contacto;
}
public Integer getId() {
return id;
}
public String getNomeEstabelecimento() {
return nomeEstabelecimento;
}
public void setNomeEstabelecimento(String nomeEstabelecimento) {
this.nomeEstabelecimento = nomeEstabelecimento;
}
public Local getLocal() {
return local;
}
public void setLocal(Local local) {
this.local = local;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescricaoEstabelecimento() {
return descricaoEstabelecimento;
}
public void setDescricaoEstabelecimento(String descricaoEstabelecimento) {
this.descricaoEstabelecimento = descricaoEstabelecimento;
}
public Calendar getDatadeOperacao() {
return datadeOperacao;
}
public void setDatadeOperacao(Calendar datadeOperacao) {
this.datadeOperacao = datadeOperacao;
}
public Calendar getHoraDeOperacao() {
return horaDeOperacao;
}
public void setHoraDeOperacao(Calendar horaDeOperacao) {
this.horaDeOperacao = horaDeOperacao;
}
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
}