Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: JSF - Java Server Faces ::: JSF HTML Tags :::

Como listar as informações de uma tabela do banco de dados em um controle <h:dataTable>

Quantidade de visualizações: 15134 vezes
O controle <h:dataTable> é um dos mais usados quando o assunto é listar as informações vindas de uma tabela de um banco de dados. Nesta dica eu mostro como isso pode ser feito. O exemplo é composto das seguintes partes:

a) Um bean Contato que possui os membros id, nome, telefone e email;
b) Um bean Agenda que nos permitirá conectar à tabela no banco de dados, obter todos os contatos na tabela contatos e retorná-los como uma lista de objetos da classe Contato;
c) Uma classe de conexão;
d) Uma página JSP ou Facelets contendo um controle <h:dataTable>.

Vamos começar criando a tabela do banco de dados. Veja o comando SQL DDL para a sua criação (nesta dica eu usei o MySQL, mas, você pode usar outros bancos de dados. Basta alterar os parâmetros da classe Conexao):

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, me chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

CREATE TABLE contatos(
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(45) NOT NULL,
  telefone VARCHAR(45) NOT NULL,
  email VARCHAR(45) NOT NULL,
  PRIMARY KEY (id)
)

Criada a tabela no banco de dados, vamos escrever a classe de conexão. Veja o código:

Código para Conexao.java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, me chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao{
  static String url = "jdbc:mysql://localhost/estudos";
  static String usuario = "root";
  static String senha = "osmar1234";
  static Connection conn = null;

  public static Connection getConexao(){
    if(conn != null){
      return conn;
    }
    else{
      try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, usuario, senha);
        return conn;
      }
      catch(SQLException ex){
        System.err.println("SQLException: " + ex.getMessage());
        System.err.println("SQLState: " + ex.getSQLState());
        System.err.println("VendorError: " + ex.getErrorCode());
        return null;
      }
      catch(Exception e){
        System.err.println("Problemas ao tentar conectar com o banco de dados: " + e);
        return null;
      }
    }
  }
}

Pronto! Agora que já temos a tabela criada no banco de dados e já temos também a classe de conexão, vamos criar a classe de negócios, ou seja, o bean gerenciado JSF Contato. Veja o código:

Código para Contato.java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, me chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivo;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Contato implements Serializable{
    private int id;
    private String nome;
    private String telefone;
    private String email;

    // construtor padrão
    public Contato(){
    }

    // consstrutor alternativo
    public Contato(int id, String nome, String telefone, String email){
       this.id = id;
       this.nome = nome;
       this.telefone = telefone;
       this.email = email;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }    
}

Note que este bean foi marcado com as anotações @ManagedBean (que o torna um bean gerenciado JSF) e @SessionScoped (que o coloca em escopo de sessão). Agora podemos criar o bean Agenda, que fará a conexão com o banco de dados, obterá os registros da tabela contatos e os retornará como uma lista de objetos da classe Contato para exibição no controle <h:dataTable>.

Código para Agenda.java:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, me chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

package arquivo;

import java.sql.*;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Agenda implements Serializable{
    public Agenda() {
    }

    // método que permite obter a lista de contatos
    public ArrayList<Contato> getListaContatos() {
        // lista que guardará os contatos
        ArrayList<Contato> lista = new ArrayList<Contato>();

        // obtém a conexão com o banco de dados
        Connection conn = Conexao.getConexao();

        try {
            Statement stmt = conn.createStatement();
            String query = "SELECT * FROM contatos ORDER BY nome";
            ResultSet rs = stmt.executeQuery(query);

            while (rs.next()) {
                int id = rs.getInt("id");
                String nome = rs.getString("nome");
                String telefone = rs.getString("telefone");
                String email = rs.getString("email");
                Contato c = new Contato(id, nome, telefone, email);

                // vamos adicionar este contato à lista
                lista.add(c);
            }
        } catch (SQLException ex) {
            // talvez um log aqui
        }

        return lista;
    }
}

Veja que a lista de contatos é retornada como uma lista ArrayList<Contato>, obtida a partir do método getListaContatos(), que faz uma conexão com o banco de dados, lista os registros da tabela contatos e os adiciona à ArrayList como objetos da classe Contato.

Para finalizar o exemplo, veja agora o código para a página JSP ou Facelets que contém o controle <h:dataTable>:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, me chama no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

<?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">
    <h:head>
        <title>Estudos JavaServer Faces</title>
    </h:head>
    <h:body>
       <h:form>
          <h:dataTable border="1" value="#{agenda.listaContatos}" var="contato">
             <h:column>#{contato.id}</h:column>
             <h:column>#{contato.nome}</h:column>
             <h:column>#{contato.telefone}</h:column>
             <h:column>#{contato.email}</h:column>
          </h:dataTable>
       </h:form>
    </h:body>
</html>

A lista de contatos é obtida pelo controle <h:dataTable> por meio do valor "#{agenda.listaContatos}" atribuído à sua propriedade value e cada contato está disponível no corpo da tag por meio do valor "contato" fornecido à propriedade var. Insira alguns registros na tabela contatos e execute a aplicação para ver o resultado.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de JSF - Java Server Faces

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 32 usuários muito felizes estudando em nosso site.