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. |
![]() |
Veja mais Dicas e truques de JSF - Java Server Faces |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |