JSF - Introducción
Objetivo
Comprender los diferentes conceptos y ciclo de vida de JSF 2, Utilizar componentes JSF para Desarrollar una Aplicación Java Web con JSF.Materiales
- Core Java Server Faces (3rd Edition) http://www.amazon.com/Core-JavaServer-Faces-3rd-Edition/dp/0137012896
- https://netbeans.org/kb/docs/web/jsf20-intro.html
- Thinkin in Java http://www.uned.es/infor-3-programacion-concurrente/CDROM/Java/Thinking%20in%20Java%20-%203rd.pdf
Requisitos
- Java
- Conocimientos de HTML, CSS, XML, javascript
- Java Web - Servlets, Filtros, Listener y JSP
Instalación
- Java SDK
- Eclipse
- Maven
- Apache Tomcat 7
Definiciones Básicas (Wikipedia)
JavaServer Faces (JSF) es una tecnología y framework que cumple con el patrón MVC (Model View Controller) para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas, pero también se puede acomodar a otras tecnologías.
JSF Servlet
JSF es un Framework que tiene como punto de entrada en una aplicación Web Java un Servlet, cuándo se quiere utilizar JSF se necesita registrar el Servlet que está definido en el API de JSF.
JSF Servlet Mapping
Como vimos en cursos anteriores de Java Web, Para que un servlet pueda ser accedido es necesario un mapeo de tipo URL -> Servlet
Con esta Regla se define que todo URL que cumple con el patrón /faces/* será procesado por el Servlet de nombre FacesServlet que es de clase javax.faces.webapp.FacesServlet .
Fases del JSF
EL Servlet tiene como tarea el control y la organización del Request. y lo realiza en diferentes fases donde las fases se componen de:
1) Restore View
Se crea o restaura el árbol de componentes (la vista) en memoria. Cuando la vista se crea por primera vez, se almacena en un contenedor padre conocido como FacesContext y se crea el UIViewRoot, y se pasa directamente a la última fase (Render Response), ya que la petición no tendrá valores que estudiar. Todas las operaciones realizadas en el FacesContext utilizan un hilo por petición de usuario, así que no hay que preocuparse porque múltiples peticiones de usuarios puedan "liarla".2) Apply Request Values
Se itera sobre los componentes del árbol, comprobando qué valor de la petición pertenece a qué componente, y los van guardando. Estos valores almacenados se llaman 'valores locales'.3) Process Validations
Se realizan las validaciones y conversiones necesarias de los valores locales. Si ocurre algún error en esta fase, se pasa a la fase Render Response, mostrándole al usuario otra vez la página actual y dándole así una nueva oportunidad para que pueda introducir los datos correctos.4) Update Model Values
Se modifican los valores de los beans asociados a los componentes de la vista con los valores locales. Ej. #{userBean.name}5) Invoke Application
Se invoca el método asociado al action del botón o link que pinchó el usuario (Ej. #{userBean.addUser}), y que hizo que se activara el ciclo de vida de la petición. Estos métodos devuelven un String que le indica al gestor de navegación qué página tiene que devolverle al usuario.6) Render Response
El servidor devuelve la página de respuesta al navegador del usuario y guarda el estado actual de la vista para poder restaurarla en una petición posterior. Si añadimos a un botón o a un link el atributo immediate a true, se saltará la fase de validación. Por ejemplo, si tenemos un botón "Volver", normalmente no querremos que valide los valores que hay introducidos sino que nos devuelva diréctamente a la página anteriorCiclo de Vida de JSF
Componentes
- Managed Bean
- Propiedades
- Acciones y Acciones "Listener"
- Componentes UI
- Validadores
- Convertidores
Managed Bean
Son Componentes o Clases JAVA que encapsulan información acerca del negocio, Pueden Representar un Formulario, un Estado el arquitecto o programador le puede dar el significado que sea necesario.
Model Bean
Son Beans que representan la lógica de Negocio, idealmente no se recomienda mezclar pero se pueden utilizar los Model Bean como propiedades de un Managed BeanPropiedades
Las Propiedades de un Managed Bean son propiedades o Atributos de una Clase Java (que a su vez es un managed Bean) que representan Componentes de un Formulario o Estado de un Formulario, el Programador debe agregar a su managed Bean las propiedades necesarias para solucionar o resolver una situación.Como se puede observar en la imágen las propiedades son atributos de una clase JAVA y deben tener sus métodos getters y setters para poder ser accedidos por el JSF (vía Reflection)
Acciones
Son métodos Java que representan y son ejecutados para el procesamiento o acción programática, siempre debe ser como consecuencia de un evento, Click de Botón, etc.
Componentes UI
Son Elementos típicamente un TAG JSP, TAG XHTML que al ser procesado genera HTML o Código de Presentación (XML,JSON, etc), Tienen la responsabilidad de imprimir código en Pantalla y leer el valor al momento de enviarse el Formulario al Servidor. * Pueden ser componentes de Estado y no se muestra nada en pantalla.
En el ejemplo se puede ver un componente de Entrada de Texto (h:inputText), que tiene anidado otro componente que no se visualiza (f:convertDateTime) pero sirve para darle información al Input para definir el Formato (dd/MM/yyyy).
Son Componentes hechos en Java y definidos en el JSF que se utilizan para Validar el Valor de un UIComponent de acuerdo al diagrama de Fases del JSF se puede ver que son ejecutados en la Fase 3 y en caso de no ser validado provee el mensaje adecuado para imprimir en pantalla.
Son utilizados para Convertir Objetos JAVA en Texto y para Convertir Text en Objetos Java
Componentes UI
Son Elementos típicamente un TAG JSP, TAG XHTML que al ser procesado genera HTML o Código de Presentación (XML,JSON, etc), Tienen la responsabilidad de imprimir código en Pantalla y leer el valor al momento de enviarse el Formulario al Servidor. * Pueden ser componentes de Estado y no se muestra nada en pantalla.
En el ejemplo se puede ver un componente de Entrada de Texto (h:inputText), que tiene anidado otro componente que no se visualiza (f:convertDateTime) pero sirve para darle información al Input para definir el Formato (dd/MM/yyyy).
Validadores
Son Componentes hechos en Java y definidos en el JSF que se utilizan para Validar el Valor de un UIComponent de acuerdo al diagrama de Fases del JSF se puede ver que son ejecutados en la Fase 3 y en caso de no ser validado provee el mensaje adecuado para imprimir en pantalla.
Convertidores
Son utilizados para Convertir Objetos JAVA en Texto y para Convertir Text en Objetos Java
Descargar los Ejemplos
Descargar