Atualizar dataTable com clique de botão

1 resposta
prog.tiago

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

1 Resposta

prog.tiago

Boa noite,

Amigos, consegui resolver… o problema era muito simples.

Vejam que na linha 21 do meu xhtml, eu crio um novo form.

Bastou apagar essa linha que funcionou. Um erro clássico de falta de atenção.

Abraços

Criado 20 de janeiro de 2012
Ultima resposta 20 de jan. de 2012
Respostas 1
Participantes 1