Dúvida: como vincular meu bean a um rich:dataTable?

11 respostas
Marcio_Nogueira
Minha dúvida é a seguinte: como vinculo meu bean a um rich:dataTable para popular as colunas? Segue o código do meu bean:
package cadastro;

import java.util.ArrayList;
import java.util.List;

import entities.Censitario;

public class CadastroCensitarioBean {
	
	private List<Censitario> censitarios = new ArrayList<Censitario>();
	
	public CadastroCensitarioBean(){}
		
	public List<Censitario> getCensitarios() {
		return censitarios;
	}

	public void setCensitarios(List<Censitario> censitarios) {
		this.censitarios = censitarios;
	}   
}
meu dataTable:
<rich:dataTable id="tabelaCensitarios" columns="40" border="1"
										    value="#{cadastroCesnsitarioBean.censitarios}" var="cad">
												<f:facet name="header">
													<rich:columnGroup>
														<rich:column width="150px">
															<h:outputText value="Matrícula"/>
														</rich:column>
														<rich:column width="300px">
															<h:outputText value="Nome"/>
														</rich:column>
														<rich:column width="150px">
															<h:outputText value="CPF"/>
														</rich:column>
													</rich:columnGroup>
												</f:facet>
												<rich:column width="150px">
													<h:outputText/>
												</rich:column>
												<rich:column width="300px">
													<h:outputText/>
												</rich:column>
												<rich:column width="150px">
													<h:outputText/>
												</rich:column>
									</rich:dataTable>

11 Respostas

yatta

Assumindo que sua classe Censitario tem os atributos Matricula, Nome, CPF, com seus Respectivos gets e sets, você vai fazer algo parecido com isso:

<rich:dataTable id="tabelaCensitarios" columns="40" border="1"  
                                             value="#{cadastroCesnsitarioBean.censitarios}" var="cad">  
                                                <f:facet name="header">  
                                                     <rich:columnGroup>  
                                                         <rich:column width="150px">  
                                                             <h:outputText value="Matrícula"/>  
                                                         </rich:column>  
                                                         <rich:column width="300px">  
                                                             <h:outputText value="Nome"/>  
                                                           </rich:column>  
                                                           <rich:column width="150px">  
                                                               <h:outputText value="CPF"/>  
                                                           </rich:column>  
                                                       </rich:columnGroup>  
                                                   </f:facet>  
                                                   <rich:column width="150px">  
                                                       <h:outputText value="#{cad.matricula}"/>  
                                                   </rich:column>  
                                                   <rich:column width="300px">  
                                                       <h:outputText value="#{cad.nome}"/>  
                                                   </rich:column>  
                                                  <rich:column width="150px">  
                                                       <h:outputText value="#{cad.matricula}"/>  
                                                   </rich:column>  
                                       </rich:dataTable>
Marcio_Nogueira

Fiz exatamente igual ao que foi sugerido, porém, nada de popular o datatable.
O problema pode estar no meu bean?

yatta

Muitas vezes o problema esta no List… veja se a Lista esta sendo preenchida corretamente.
Caso ela esteja, o problema pode ser como voce está tratando essa lista no Bean.
Observe se esta retornando alguma Exception. Caso esteja retornando Exception, poste ela aqui para darmos uma olhada.

OliveirakunJava

Você não está declarando a sua classe como um managed bean:

@ManagedBean public class CadastroCensitarioBean {
Também me parece que sua lista está vazia. Tente carregar uma lista com dados logo após inicia-lá.
Há também um erro nesta linha:

value="#{cadastroCesnsitarioBean.censitarios}" var="cad">

O correto seria:

value="#{cadastroCensitarioBean.censitarios}" var="cad">
Marcio_Nogueira

O mapeamento do bean está no faces-config.
Qual o erro que você achou na chamada que faço ao bean na seguinte linha: value="#{cadastroCesnsitarioBean.censitarios}" var="cad">

OliveirakunJava

Marcio_Nogueira:
O mapeamento do bean está no faces-config.
Qual o erro que você achou na chamada que faço ao bean na seguinte linha: value="#{cadastroCesnsitarioBean.censitarios}" var="cad">

Olha bem no post acima, O nome da classe é CadastroCensitarioBean, vc está chamando na tag como cadastroCesnsitarioBean.

Marcio_Nogueira

sim, é como está mapeado no faces-config cadastroCensitarioBean é o nome do bean, a classe está mapeada de forma correta.

yatta

e ai, conseguiu resolver o problema??

Marcio_Nogueira

Ainda não, estou tentando outras formas para solucionar.

Marcio_Nogueira
Estou passando valores para as variáveis, mas mesmo assim, o datatable não é populado. Estou fazendo da seguinte forma no meu bean:
package cadastro;

import java.util.ArrayList;
import java.util.List;

import dao.CensitarioDAO;

import entities.Censitario;

public class CadastroCensitarioBean {
	//private CensitarioDAO censitarioDao;
	private List<Censitario> censitarios = new ArrayList<Censitario>();
	
	public CadastroCensitarioBean(){}
		
	
	@SuppressWarnings("unchecked")
	public List<Censitario> getCensitarios() {
		String cpf = "[CPF removido]";
		String matricula = "06667";
		String nome = "Marcio Nogueira";
		for(Censitario censitario : censitarios)
		{
			censitario.setMatricula(matricula);
			censitario.setNome(nome);
			censitario.setCpf(cpf);
			censitarios.add(censitario);
			
		}
		return censitarios;
		
	}

	public void setCensitarios(List<Censitario> censitarios) {
		this.censitarios = censitarios;
	}   
}
R

OliveirakunJava:
Marcio_Nogueira:
O mapeamento do bean está no faces-config.
Qual o erro que você achou na chamada que faço ao bean na seguinte linha: value="#{cadastroCesnsitarioBean.censitarios}" var="cad">

Olha bem no post acima, O nome da classe é CadastroCensitarioBean, vc está chamando na tag como cadastroCesnsitarioBean.

cadastroCesnsitarioBean é diferente de CadastroCensitarioBean

tem certeza que está mapeado corretamente?

Criado 11 de março de 2011
Ultima resposta 15 de mar. de 2011
Respostas 11
Participantes 4