Prencimento de uma dataTable

6 respostas
C

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,

6 Respostas

Roselito_Favero_da_S

Tente fazer:

listaPessoa = op.listar();
return listaPessoa;

e veja se funciona.

P

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.

C

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.

Roselito_Favero_da_S

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.

C

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

P

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

Criado 18 de novembro de 2013
Ultima resposta 20 de nov. de 2013
Respostas 6
Participantes 3