Boa tarde amigos,
No código abaixo, criei um dataTable com uma lista imensa de matriculados, também criei um campo para pesquisa, e desejo que ao clicar no botão de pesquisar seja gerada uma Lista com os resultados, e o dataTable seja atualizado com essa lista.
Sei que com o PrimeFaces basta utilizar filter, no entanto gostaria de executar na unha para testar desempenho.
Vejam meu código:
XHTML
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition 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"
template="/WEB-INF/templates/default.xhtml">
<ui:define name="conteudo">
<h:form>
<h:outputText value="Pesquisar matricula: " />
<p:inputText size="100" id="pesquisa" value="#{matriculadoBean.matriculado.matricula}" />
<p:commandButton value="..." actionListener="#{matriculadoBean.getListaFiltrada}" update="tableMatricula" />
<!-- Tabela de matriculados -->
<h:form id="form">
<p:dataTable id="tableMatricula" var="matricula" value="#{matriculadoBean.lista}"
paginator="true" rows="20" widgetVar="tableMatricula"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="5,10,15,20,50,100">
<p:column headerText="Matricula" sortBy="#{matricula.matricula}">
<h:outputText value="#{matricula.matricula}" />
</p:column>
<p:column headerText="Nome" sortBy="#{matricula.nome}">
<h:outputText value="#{matricula.nome}" />
</p:column>
<p:column headerText="Saldo" sortBy="#{matricula.saldo}">
<h:outputText value="#{matricula.saldo}" />
</p:column>
</p:dataTable>
</h:form>
</h:form>
</ui:define>
</ui:composition>
BEAN
package br.com.tiago.acad.managedBeans;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import br.com.tiago.acad.dominio.Matriculado;
import br.com.tiago.acad.services.MatriculadoService;
@ManagedBean(name = "matriculadoBean")
@SessionScoped
public class MatriculadoBean {
private Matriculado matriculado = new Matriculado();
private List<Matriculado> lista = new ArrayList<Matriculado>();
public MatriculadoBean(){
lista=new MatriculadoService().listarMatriculados();
}
public List<Matriculado> getLista() {
return lista;
}
public List<Matriculado> getListaFiltrada(ActionEvent event) {
lista = new MatriculadoService().buscarPorMatricula(matriculado);
return lista;
}
public Matriculado getMatriculado() {
return matriculado;
}
public void setMatriculado(Matriculado matriculado) {
this.matriculado = matriculado;
}
}
Service
package br.com.tiago.acad.services;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import br.com.tiago.acad.dominio.Matriculado;
import br.com.tiago.acad.util.HibernateUtil;
public class MatriculadoService {
@SuppressWarnings("unchecked")
public List<Matriculado> listarMatriculados() {
Session session = HibernateUtil.getSession();
try {
return session.createCriteria(Matriculado.class).list();
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
public List<Matriculado> buscarPorMatricula(Matriculado m) {
Session session = HibernateUtil.getSession();
try {
List<Matriculado> lista = session.createCriteria(Matriculado.class)
.add(Restrictions.like("matricula", m.getMatricula()))
.list();
return lista;
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Session session = HibernateUtil.getSession();
try {
List<Matriculado> lista = new ArrayList<Matriculado>();
lista = session.createCriteria(Matriculado.class).list();
for (Matriculado matriculado : lista) {
System.out.println(matriculado.getMatricula());
System.out.println(matriculado.getNome());
System.out.println(matriculado.getSaldo());
}
} finally {
session.close();
}
}
}
Se puderem me ajudar, agradeço
:D :D