Você está aqui:
JSF - Java Server Faces :::
JSF HTML Tags ::: |
Como exibir o número da linha (número de ordem) em uma coluna do controle <h:dataTable>Quantidade de visualizações: 10807 vezes |
|
Em algumas situações gostaríamos de exibir o número da linha (ou número de ordem) em uma determinada coluna de um controle <h:dataTable>. Numerar as linhas de uma tabela pode ser extremamente útil quando temos mais de 20 linhas. Sem a numeração nos perdemos facilmente nas mesmas. Isso pode ser feito atribuindo-se ao controle <h:dataTable> uma instância da classe abstrata javax.faces.model.DataModel. Esta classe possui um método getRowIndex() que retorna o índice (començando em 0) do elemento sendo percorrido no momento. Nesta dica eu mostro como criar uma ArrayList de objetos da classe Livro e fornecer tal lista para o construtor da classe ListDataModel, uma implementação concreta da classe abstrata DataModel. Vamos começar criando um bean gerenciado JSF para representar um livro. Eis o código: 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, um bean gerenciado JSF que contém um membro privado listaLivros do tipo DataModel: 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;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
@ManagedBean
@SessionScoped
public class Biblioteca implements Serializable{
// vamos declarar um DataModel de livros
private DataModel<Livro> listaLivros;
public Biblioteca(){
// vamos adicionar alguns livros à lista
ArrayList<Livro> livros = new ArrayList<Livro>();
livros.add(new Livro(234, "Java - Como Programar",
"Harvey M. Deitel, Paul J. Deitel"));
livros.add(new Livro(823, "Java 2 - Interfaces Gráficas",
"Osmar J. Silva"));
livros.add(new Livro(698, "Core Java 2: Fundamentos - Volume 1",
"Cay S. Horstmann"));
livros.add(new Livro(98, "JavaScript Avançado",
"Osmar J. Silva"));
// vamos adicionar a lista de livros ao DataModel
listaLivros = new ListDataModel<Livro>(livros);
}
// método que permite obter a lista de livros
public DataModel<Livro> getListaLivros(){
return listaLivros;
}
}
Observe que os dados a serem exibidos no <h:dataTable> são retornados no método getListaLivros() como um objeto da classe DataModel. 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>#{biblioteca.listaLivros.rowIndex + 1}</h:column>
<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>
Veja que agora nós temos um elemento <h:column> que exibe o índice do item atual na lista por meio da expressão #{biblioteca.listaLivros.rowIndex + 1}. Execute e verá uma tabela com 4 linhas e 4 colunas. A primeira coluna exibirá os valores de 1 até 4. |
|
|
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 |





