[RESOLVIDO]DataTable Ajuda

7 respostas
R

Boa noite a todos;

Alguém poderia me ajudar, e me dizer o que posso estar fazendo errado, eu preciso listar três campos na minha dataTable, mas, sem sucesso.

Olhem o código!

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Exemplo de DataTable</title>
            <script type="text/javascript" src="/budget/resources/jquery.maskedinput-1.2.1.js"></script>
        </head>
        <body>
            <h3><center>Montando um DataTable de CADASTROS</center></h3>

            <h:form id="dataTable">
            <center><rich:dataTable value="#{ClienteDao.todosClientes}" var="clientes" rows="10" id="table"></center>
                <f:facet name="header">
                    <h:outputText id="listaClientes" value="TODOS OS CLIENTES CADASTRADOS"/>
                </f:facet>

                <rich:column>
                    <f:facet name="header">
                        <h:outputText id="NomeID"/>
                    </f:facet>
                    <h:outputText id="nome" value="#{clientes.nome}"/>
                </rich:column>

                <rich:column>
                    <f:facet name="header">
                        <h:outputText id="EmailID"/>
                    </f:facet>
                    <h:outputText id="email" value="#{clientes.email}"/>
                </rich:column>

                <rich:column>
                    <f:facet name="header">
                        <h:outputText id="CpfID"/>
                    </f:facet>
                    <h:outputText id="cpf" value="#{clientes.cpf}"/>
                </rich:column>
                <h:commandButton id="botao" value="pesquisar" action="#{cliente.pesquisarTodos}"/>
            </rich:dataTable>
         </h:form>
        </body>
    </html>
</f:view>

E na minha classe Bean tenho:

public class ClienteBean
{
    private String nome;
    private String cpf;
    private String email;
  
    public ClienteBean() {}

    public ClienteBean(String nome, String email, String cpf) 
   {
        this.nome = nome;
        this.email = email;
        this.cpf = cpf;
    }   

       // Metodos getters e setters;

     public void pesquisarTodos() throws SQLException
    {
        ClienteDao dao = new ClienteDao();
        dao.carregarDados(this);
        List<ClienteBean> todosClientes = dao.carregarDados(this);
    }
E também tenho minha classe DAO;
public List<ClienteBean> carregarDados(ClienteBean cliente) throws SQLException
 {
     String sql = "SELECT NOME, EMAIL, CPF FROM tb_cliente";  
     List <ClienteBean>todosClientes = new ArrayList<ClienteBean>();
     stmt = conexao.prepareStatement(sql);
     rs = stmt.executeQuery();

     while(rs.next())
     {
         cliente.setNome(rs.getString("NOME"));
         cliente.setEmail(rs.getString("EMAIL"));
         cliente.setCpf(rs.getString("CPF"));

         todosClientes.add(cliente);
     }
     rs.close();
     stmt.close();

     return todosClientes;

Se alguém conseguir me ajudar eu agradeço muito

obrigado!

7 Respostas

luxu

mude aki na dattable var=“clietntes”…deve resolver!

R

Boa noite, nem reparei…haha
Arrumei e testei. Mas não retorna valor para a tabela

luxu

debug seu código pra v se o array está sendo preenchido, me parece ser ali o problema…

R

Sim, testei,
Meu Array esta sendo preenchido, fiz a correção na pagina JSP, que estava sem um <h:form>,
mas aparentemente eu estou errando na hora de colocar esses valores na DataTable.

RafaelCassau

Bom dia rbs_assis, cara parece que a sua lista foi declarada dentro do metodo pesquisarTodos(), tenta declarar essa lista como global e preenche-la dentro do metodo, detalhe não esqueça dos getters e setters, OBS: você deve buscar essa lista na Bean e não na DAO a dao tem que retornar para a controller a lista de clientes e a controller retornar para a bean, ae na bean você cria uma lista de clientes global que alimentara sua datatable,posta o resultado depois! espero ter ajudado t+

R

Boa tarde! Resolvido o problema

Depois de uma ajuda de um colega de classe, e da ajuda de vocês consegui!

Fiz o que você falou RafaelCassau.

Na minha bean.

private List cliente;

//e seus respectivos getters e setters

Na minha classe Dao abaixo do stmt.close(); inseri a linha de código que atribuía a variável cliente o valor armazenado na variável todosClientes.

cliente.setCliente(todosClientes);

E na minha JSP alterei na dataTable a linha 19

<rich:dataTable value="#{cliente.cliente}" var="cliente" >

Passando o meu bean que nomei como cliente na minha faces.config, e minha variavel do tipo List, que esta carregada com os valores obtidos pela variavel todosClientes,

RafaelCassau

Boa noite rbs_assis que bom que conseguiu resolver seu problema cara, é isso ae, qualquer duvida é só postar!!!

Criado 29 de outubro de 2011
Ultima resposta 3 de nov. de 2011
Respostas 7
Participantes 3