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

Entenda e aprenda a usar o controle <h:dataTable> em suas aplicações JSF

Quantidade de visualizações: 10335 vezes
O controle <h:dataTable>, um objeto da classe HtmlDataTable, representa um elemento HTML table compatível com o HTML 4.01. O controle <h:dataTable> pode ser associado a um bean de suporte para obter as informações a serem exibidas na tabela, assim como para propósito de gerenciamento de eventos.

Veja a posição da classe HtmlDataTable na hierarquia de classes do Java EE:

java.lang.Object
  javax.faces.component.UIComponent
    javax.faces.component.UIComponentBase
      javax.faces.component.UIData


Veja que esta classe implementa as interfaces NamingContainer e StateHolder.

O elemento HTML table gerado pelo controle <h:dataTable> pode ser customizado usando classes e definições de folhas de estilo em cascata CSS (cascading stylesheet) para melhorar a aparência do cabeçalho, rodapé, colunas e linhas das tabelas. As técnicas de formatação mais comuns, tais como alternar as cores das linhas, podem ser conseguidas com muita facilidade.

O conteúdo de um controle <h:dataTable> pode vir de uma das seguintes fontes:

a) Um objeto Java;
b) Um array;
c) Uma instância de java.util.List;
d) Uma instância de java.sql.ResultSet;
e) Uma instância de javax.servlet.jsp.jstl.sql.Result;
f) Uma instância de javax.faces.model.DataModel.

À medida que o controle <h:dataTable> percorre a fonte de dados, ele disponibiliza cada item do array, lista, result set, etc, dentro do corpo da tag. A coleção dos dados a serem exibidos é informada na propriedade value, enquanto o nome de cada item é especificado usando-se o atributo var do controle.

Mas, vamos ver um exemplo do uso deste controle? Se ainda não o fez, crie uma nova aplicação web JSF . Em seguida crie o seguinte bean gerenciado JSF:

Código para Livro.java:

package arquivo;

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

@ManagedBean
@SessionScoped
public class Livro implements Serializable{
    private int codigo;
    private String titulo;
    private String autor;
    
    // não esqueça o construtor vazio
    public Livro(){}

    public Livro(int codigo, String titulo, String autor){
        this.codigo = codigo;
        this.titulo = titulo;
        this.autor = autor;
    }

    public int getCodigo() {
        return codigo;
    }


Aqui nós temos uma classe Livro contendo os atributos codigo, titulo e autor. Note que esta classe foi marcada com as anotações @ManagedBean e @SessionScoped. Isso a torna um bean gerenciado JSF e com escopo de sessão.

Agora vamos criar um outro bean que nos permite criar uma lista de livros. Veja o código para Biblioteca.java:

Código para Biblioteca.java:

package arquivo;

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

@ManagedBean
@SessionScoped
public class Biblioteca implements Serializable{
    // vamos declarar uma lista de livros
    private ArrayList<Livro> listaLivros;

    public Biblioteca(){
        // vamos adicionar alguns livros à lista
        listaLivros = new ArrayList<Livro>();
        
        listaLivros.add(new Livro(234, "Java - Como Programar",
           "Harvey M. Deitel, Paul J. Deitel"));
        listaLivros.add(new Livro(823, "Java 2 - Interfaces Gráficas",


Observe que nesta classe Biblioteca nós criamos uma ArrayList de objetos da classe Livro e a retornamos no método getListaLivros(). Observe agora a página JSP ou Facelets que contém o controle <h:dataTable>:

Código para index.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">
    <h:head>
        <title>Estudos JavaServer Faces</title>
    </h:head>
    <h:body>
       <h:form>
           <h:dataTable border="1" value="#{biblioteca.listaLivros}" 


Aqui nós fornecemos o valor "#{biblioteca.listaLivros}" para a propriedade value da <h:dataTable>. Isso já basta para que o controle tenha acesso à lista de livros. Em seguida definimos o valor "livro" para a propriedade var. Agora cada livro pode ser acessado individualmente na lista usando-se a variável "livro".

Acredito que esta dica tenha sido uma boa introdução ao uso do controle <h:dataTable> em suas aplicações JSF. É claro que você deverá acessar outras dicas e truques desta seção para aprender mais sobre outras possibilidades do uso deste controle.

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á 42 usuários muito felizes estudando em nosso site.