Los datos que se pueden mostrar mediante un h:dataTable son:
- Arrays
- Instancias del Java Colletion Framework
- Instancias de java.sql.ResultSet
- Instancias de javax.servlet.jsp.jstl.sql.Result
- Instancias de javax.faces.model.DataModel
Supongamos el siguiente bean llamado "LibroBean":
package proyectoJSF.model;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class LibroBean {
private Integer id = 105;
private String nombre = "JSF EL";
private AutorBean autor = new AutorBean();
private String[] idiomas = { "Español", "Inglés", "italiano" };
private List<String> paises;
private Map<String, LocalDate> ediciones;
public LibroBean() {
cargarPaises();
cargarEdiciones();
}
public String[] getIdiomas() {
return idiomas;
}
public List<String> getPaises() {
return paises;
}
public Map<String, LocalDate> getEdiciones() {
return ediciones;
}
private void cargarPaises() {
paises = new ArrayList<>();
paises.add("Perú");
paises.add("Canadá");
paises.add("Japón");
}
private void cargarEdiciones() {
ediciones = new TreeMap<>();
ediciones.put("Primera", LocalDate.of(2012, 12, 30));
ediciones.put("Segunda", LocalDate.of(2015, 2, 12));
ediciones.put("Tercera", LocalDate.of(2020, 6, 7));
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public AutorBean getAutor() {
return autor;
}
public void setAutor(AutorBean autor) {
this.autor = autor;
}
}
Se aprecia que contiene diversas estructuras de datos, vamos a mostrar la estructura MAP mediante un h:dataTable de la siguiente manera:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Prueba 04 - DataTable</title>
</h:head>
<h:body>
<h1>Ediciones de los libros</h1>
<h:dataTable value="#{libroBean.ediciones}" var="edicion" border="1">
<h:column>
<f:facet name="header">
Edición
</f:facet>
<h:outputText value="#{edicion.key}" />
</h:column>
<h:column>
<f:facet name="header">
Fecha de publicación (aaaa/mm/dd)
</f:facet>
<h:outputText value="#{edicion.value}" />
</h:column>
</h:dataTable>
</h:body>
</html>
Tenemos las siguientes etiqeutas y sus atributos:
- h:dataTable, se convierte posteriormente en una tabla HTML
- value, es el atributo cuyo valor es el que se itera dentro de la tabla
- var, es el nombre de la variable que usaremos dentro de la estructura
- border, similar a la propiedad "border" de una tabla HTML
- h:column, en contraste con HTML no es necesario definir las filas, se hacen directamente las columnas. Dentro tendremos:
- f:facet name="header", dentro de esta etiqueta con este "name" se coloca el texto que irá en dicha columna.
- h:outputText value="#{edicion.key}", tendremos una etiqueta de texto que mostrará la clave de cada elemento del MAP
- h:outputText value="#{edicion.value}", tendremos una etiqueta de texto que mostrará el valor de cada elemento del MAP
El resultado visual sería:
Edición | Fecha de publicación (aaaa/mm/dd) |
---|---|
Primera | 2012-12-30 |
Segunda | 2015-02-12 |
Tercera | 2020-06-07 |
No hay comentarios:
Publicar un comentario