Curso de JSF 2
Configuración de nuestro primer proyecto
En esta lección configuraremos nuestro primer proyecto JSF y crearemos una pequeña aplicación que permita insertar datos mediante un formulario. Esta aplicación utilizará un Backing Bean para gestionar los datos y vincularlos con la vista.
index.xhtml
El archivo index.xhtml define un formulario básico con etiquetas JSF para capturar datos y un botón para enviarlos.
<!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"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Insert title here</title>
</h:head>
<h:body>
<h:form>
<h:inputText label="id" value="#{libroBB.libro.id}" />
<h:inputText label="titulo" value="#{libroBB.libro.titulo}" />
<h:inputText label="precio" value="#{libroBB.libro.precio}" />
<h:commandButton value="Enviar" action="#{libroBB.insertar}" />
</h:form>
</h:body>
</html>
Explicación del código
- Formulario (
<h:form>): Contiene los campos de entrada y el botón de envío. - Campos de entrada (
<h:inputText>):id: Campo para capturar el identificador del libro.titulo: Campo para capturar el título del libro.precio: Campo para capturar el precio del libro.
- Botón de envío (
<h:commandButton>): Llama al métodoinsertardel Backing Bean al hacer clic.
LibroBB
El Backing Bean es responsable de gestionar los datos del formulario y realizar la operación de inserción.
@ManagedBean
public class LibroBB {
private Libro libro;
public LibroBB() {
this.libro = new Libro();
}
public Libro getLibro() {
return libro;
}
public void setLibro(Libro libro) {
this.libro = libro;
}
public String insertar() {
System.out.println(
"Valores " + this.libro.getId() + " - " + this.libro.getPrecio() + " - " + this.libro.getTitulo());
System.out.println("insertamos en la base de datos");
return "/index.xhtml";
}
}
Abriremos y cerraremos la etiqueta f:view justo antes de abrir y cerrar las etiquetas del body.
Clase Libro
El Backing Bean utiliza una clase auxiliar para representar los datos de un libro.
public class Libro {
private int id;
private String titulo;
private double precio;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
}
Funcionamiento
- Inicio del formulario:
- Al cargar la página, el usuario puede llenar los datos del libro.
- Vinculación con el Backing Bean:
- Los campos del formulario están vinculados a las propiedades del objeto
libroen el Backing BeanLibroBB.
- Los campos del formulario están vinculados a las propiedades del objeto
- Botón de envío:
- Al hacer clic en el botón Enviar, se ejecuta el método
insertar, que imprime los valores capturados y simula la inserción en una base de datos.
- Al hacer clic en el botón Enviar, se ejecuta el método
- Redirección:
- El formulario redirige nuevamente a la misma página (
/index.xhtml).
- El formulario redirige nuevamente a la misma página (
Puntos importantes
- Declaración del Managed Bean:
- El Backing Bean debe estar anotado con
@ManagedBeanpara que JSF lo reconozca.
- El Backing Bean debe estar anotado con
- Ciclo de vida:
- Los datos ingresados en la vista se mapean automáticamente a las propiedades del Backing Bean gracias a las expresiones EL (
#{}).
- Los datos ingresados en la vista se mapean automáticamente a las propiedades del Backing Bean gracias a las expresiones EL (
- Reutilización:
- La clase
Libroes una estructura reutilizable para manejar datos en diferentes partes de la aplicación.
- La clase