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: 15313 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 com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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 com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<?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 |
|
Java - Como converter Coordenadas Cartesianas para Coordenadas Polares usando Java - Java para Engenharia |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






