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: 10265 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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

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:

----------------------------------------------------------------------
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 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;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }
}


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:

----------------------------------------------------------------------
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 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",
           "Osmar J. Silva"));
        listaLivros.add(new Livro(698, "Core Java 2: Fundamentos - Volume 1",
           "Cay S. Horstmann"));
        listaLivros.add(new Livro(98, "JavaScript Avançado",
           "Osmar J. Silva"));
    }

    // método que permite obter a lista de livros
    public List<Livro> getListaLivros(){
       return listaLivros;
    }
}

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:

----------------------------------------------------------------------
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="#{biblioteca.listaLivros}" 
             var="livro">
             <h:column>#{livro.codigo}</h:column>
             <h:column>#{livro.titulo}</h:column>
             <h:column>#{livro.autor}</h:column>
          </h:dataTable>
       </h:form>
    </h:body>
</html>

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:

Vamos testar seus conhecimentos em Hidrologia

(Enem 2016) A renaturalização de rios e córregos é, há muito tempo, uma realidade na Europa, no Japão, na Coreia do Sul, nos Estados Unidos e em outros países. No Brasil ainda são muito tímidas as iniciativas, mas algumas poucas cidades estão adotando essa importante prática.

Disponível em: http://sosriosdobrasil.blogspot.com.br. Acesso em: 10 dez. 2012 (adaptado).

A legislação brasileira avançou ao estabelecer como unidade territorial para a gestão desse recurso

A) os biomas.

B) as reservas ecológicas.

C) as unidades do relevo.

D) as bacias hidrográficas.

E) as áreas de preservação ambiental.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Dimensionamento de pilares de canto

Os pilares de canto são solicitados pela flexão oblíqua, tendo momentos de 1ª ordem e excentricidades nas direções x e y.

Analise os dados para o pilar a seguir:



Qual o valor das excentricidades no topo e na base do referido pilar, em x e y?

A) e1,x,A = 1,02cm.
e1,x,B = 1,31cm.
e1,y,A = 2,05cm.
e1,y,B = 1,75cm.

B) e1,x,A = 1,52cm.
e1,x,B = 1,31cm.
e1,y,A = 2,22cm.
e1,y,B = 1,99cm.

C) e1,x,A = 2,10cm.
e1,x,B = 1,56cm.
e1,y,A = 1,50cm.
e1,y,B = 1,99cm.

D) e1,x,A = 2,78cm.
e1,x,B = 1,32cm.
e1,y,A = 1,50cm.
e1,y,B = 1,99cm.

E) e1,x,A = 1,78cm.
e1,x,B = 1,32cm.
e1,y,A = 1,22cm.
e1,y,B = 0,99cm.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Analise o seguinte código Python

a = {5, 8, 2, 1}
b = {1, 4, 5, 3}
c = a & b
print(c)

Qual é o resultado de sua execução?

A) {5, 5, 1, 1}

B) Um erro de execução na linha 2

C) {1, 5}

D) {5, 8, 2, 1, 1, 4, 5, 3}
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em AutoCAD Civil 3D

A paleta Toolspace

Qual aba da paleta Toolspace é usada para exibir os objetos do Civil 3D em uma lista resumida e expansível?

A) Settings

B) Prospector

C) Toolbox

D) Survey
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em JavaScript

Um arquivo JavaScript externo precisa, obrigatoriamente, conter a tag <script>

A) Verdadeiro

B) Falso
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de JSF - Java Server Faces

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

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



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