Prencimento de uma dataTable

Caros colegas,

Por favor me ajude. Eu já li diversos tutorias e não consigo resolver meu problema. Preciso preencher um simples dataTable com dados oriundos de um BD e não estou conseguindo.

Quando testo via java consigo ler os dados porém via dataTable não. Por peço a colaboração dos colegas para o meu caso. Acho que estou errando coisa “banal” mas já não consigo ver os meus erros.

Bem vou colocar aqui os códigos, mas acho que está no bean visão e o dataTable.

Meu face:


	<managed-bean>
		<managed-bean-name>order2</managed-bean-name>
		<managed-bean-class>financeiro.Visao.Visao</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
	</managed-bean>

Meu bean visao.java


package financeiro.Visao;

import java.sql.SQLException;
import java.util.ArrayList;


import financeiro.DAO.OperacaoCRUD;
import financeiro.Model.Pessoa;

public class Visao {

	private ArrayList<Pessoa> listaPessoa;

	public ArrayList<Pessoa> getListaPessoa() {
		return listaPessoa;
	}
	
	public  ArrayList<Pessoa> getLista() throws ClassNotFoundException, SQLException{
		
		OperacaoCRUD op = new OperacaoCRUD();
		
		return listaPessoa = op.listar();
		
	}}

Meu arquivo xhtml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html 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"
      >
    <h:head>
    	<h:outputStylesheet library="css" name="table-style.css"  />
    </h:head>
    <h:body>
 
    	<h1>JSF 2 dataTable example</h1>
 
    		<h:dataTable value="#{order2.listaPessoa}" var="o" styleClass="order-table" headerClass="order-table-header" rowClasses="order-table-odd-row,order-table-even-row">
 
    			<h:column>
    				<!-- column header -->
    				<f:facet name="header">Nome</f:facet>
    				<!-- row record -->
    				#{o.nome}
    			</h:column>
 
    			<h:column>
    				<f:facet name="header">Senha</f:facet>
    				#{o.senha}
    			</h:column>
 
    			<h:column>
    				<f:facet name="header">Cargo  </f:facet>
    				#{o.cargo}
    			</h:column>
 
    			<h:column>
    				<f:facet name="header">Email</f:facet>
    				#{o.email}
    			</h:column>
 
    		</h:dataTable>
 
    </h:body>
</html>

Já coloquei a pergunta num outro forum parecido com esse e não obtive resposta de resolução. Consigo fazer todo o resto do CRUD alterar, inserir, cadastrar porém a consulta impaca.

Se eu inserir essa linha no código na classe visão só para testa consigo ler um registro,


System.out.println(listaPessoa.iterator().next().getNome());
		

mas não consigo levar para o view. Aparece a tabela vazia somente com o cabeçalhos de coluna. Por favor me oriente no meu erro, seu que está no retorno da lista para o xhtml, mas como faço isso?

Grato a todos,

Tente fazer:

listaPessoa = op.listar();
return listaPessoa;

e veja se funciona.

Tente fazer igual o cara falou ai. Se não der certo, mude o o escopo de seu bean para session scoped ou view scoped. Dê uma pesquisada sobre escopos no jsf. A caelum tem apostilas sobre jsf, são boas.

Colega não funcionou. Já tentei mas estou com muita dificuldade. Como disse eu consigo ler sem ser jsf somente java mas estou com dificulldade de ler no dataTable.

Opa, vi mais uma coisa errada: na sua página você está chamando o atributo listaPessoa no dataTable, mas no seu bean está como getLista(). Deveria ser getListaPessoa(), como você fez, mas repare que o seu getListaPessoa não chama o getLista em momento algum… coloque tudo em apenas um getListaPessoa e veja se resolve.

Nada. Cara estou muito “burrinho” para esse preenchimento. Como já comentei via java eu acesso mas via jsf não.

no value da datable chame o metódo assim: order2.getLista()