viernes, 21 de febrero de 2014

Introducción a JSF

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

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 EEJSF 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 anterior


Ciclo 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 Bean


Propiedades

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).

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


En el ejemplo, se utiliza para convertir a un Objeto de clase Country.

Descargar los Ejemplos

Descargar