Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JavaServer Faces es un estándar oficial JEE 5, se trata de un framework que define un modelo de
componentes de interfaz de usuario y de eventos.
JavaServer Faces nos permite manejar el estado de los componentes de interfaz de usuario, manejar
sus eventos, la validación y conversión del lado del servidor y centralizar la navegabilidad de las páginas
de nuestra aplicación, como se muestra en la siguiente imágen:
JSF es el marco estándar que proporciona Java para construir aplicaciones web y JEE 5, es un marco
desarrollo que sigue el patrón MVC, proporcionando una manera de validar datos, llamar a reglas de
negocio y devolver los resultados al cliente.
Estado
Homologado en 2008Q2
La última versión estable homologada es JSF 1.2
Enlaces principales
• Página principal sobre JSF: http://java.sun.com/javaee/javaserverfaces/
• Información sobre el mundo JSF: http://www.jsfcentral.com/
Consideraciones Generales
JavaServer Faces proporciona :
Las aplicaciones JSF siguen el patrón MVC, concretamente el modelo 2. Una típica aplicación JSF está
compuesta de las siguientes partes:
En JSF los modelos son JavaBeans (POJO), no Actions, no Forms, no se extiende de ninguna clase, y lo
que es mejor, los recursos no se declaran expresamente, JSF los crea por nosotros.
Estos beans se dividen en dos grupos, por un lado los encargados de responder a las peticiones de los
clientes. En la tecnología de visión que empleemos, se escribirá una llamada a estos objetos; es misión
de JSF, crear la petición, interceptarla y dirigirla a el objeto que nosotros le indiquemos. De esta
manera, programar en JSF en muy parecido a programar en Swing, toda la interacción del usuario con la
pantalla se controla con eventos.
Cuando el usuario pulsa un boton, lanza una peticion URL, sin que haya que programarla, que es
interceptada por un servlet controlador, este servlet redirige la información de la petición al objeto que
creó antes asociado al documento, comprueba la información que tenía antes y la contenida en la nueva
peticion, y genera los eventos necesarios según los cambios que haya habido, por ejemplo, el pulsar un
botón.
Estas páginas, una vez tratadas por el desarrollo JSF se representarán como objetos Java con una
estructura jerárquica en forma de árbol, para poder ser manipuladas por código, como haríamos en
una aplicación Swing, y asi añadir componentes adicionales, contenidos en tablas, etc.
JSF trae asociado un modelo de componentes para simplificar y acelerar el desarrollo de las
aplicaciones. Estos componentes se ordenan en una estructura jerárquica a la que se puede acceder y
modificar. Pero estos componentes no saben cómo dibujar la vista en el cliente, esa es la labor de otra
parte fundamenteal de la arquitectura JSF, los Renders.
La misión de los Renders es dibujar la información que, en forma jerárquica, se almacena en los
componentes la estructura de la página; de esta manera, es posible desarrollar una aplicación sin
conocer cual será el dispositivo final.
O lo que es mejor desarrollar una aplicación que se ve en dispositivos diferentes, solo cambiando el
Render, sin tocar ni una línea de la vista. O que el mismo objeto se vea como botón o como enlace, sólo
cambiando el render asociado a ese componente. Esta técnica es también de ayuda aunque sólo
desarrollemos con el lenguaje de marcado HTML en nuestra mente, pues es el Render_el encargado de
escribir gran parte del javascript que se necesita para el funcionamiento de la aplicación, y lo hace de
manera adecuada en cada navegador. JSF sólo obliga a que los desarrollos de la especificación traigan
un _Render para HTML.
Recomendaciones de uso
Recomendamos el desarrollo de aplicaciones web con JavaServer Faces si la aplicación tiene las
siguientes necesidades:
Recomendamos también dividir los ficheros de configuración por funcionalidades ya que JSF nos lo
permite. Dedicar un fichero a escribir las reglas de navegación, y otro a la creación de los backing bean,
otro a la configuración del entorno, y así tantos como necesitemos.
Los puntos fuertes que hemos visto para JavaServer Faces son:
• Gran cantidad de componentes listos para usarse con funcionalidades avanzadas: Tomahawk y
RichFaces
• Permite encapsular otras tecnologías como Ajax en componentes JSF, haciendo su uso más facil
y productivo, al aislar al programador de ellas.
• Mas fácil de usar al aislar al desarrollador del API de Servlet. No request, no response, no
setAttibute. Sin embargo la curva de aprendizaje del modelo puede llegar a ser larga.
• Gran cantidad de herramientas para el desarrollo IDE en JSF al ser el estandar de Java: Eclipse
y el subproyecto Web Tools Project, JBoss Tools y NetBeans
Responsabilidades
La misión de JSF es aislar al programador tanto del tipo de cliente que hace la petición como del
protocolo usado para tal menester, permitiendo la creación de las vistas de una manera abstracta,
usando un modelo de componentes estable, estandar y extensible. De esta manera al aislarse del
entorno y sus particularidades, los desarrollos pueden ser más productivos, rápidos y eficazes, al usar
componentes ya probados.
Restricciones y limitaciones
Ha habido un intento por tratar de que "convivan" JSF y Struts, es el caso de la librería struts-
faces(librería que no ha sido evaluada ni mucho menos homologada por arquitectura) no hay
documentación para esta librería y en el sitio oficial de Apache no se puede encontrar la versión que
correspondería para nuestra versión homologada de Struts 1.2.7
Ejemplos de uso
No aplica.
Documentación
• Nuevas características en JSF 1.2
• Capítulos 10,11,12,13 y 14 del Tutorial de Java EE 5
http://java.sun.com/javaee/5/docs/tutorial/doc/bnaph.html
• Introducción a JSF http://www.coreservlets.com/JSF-Tutorial/
• Un artículo sobre JSF http://www-128.ibm.com/developerworks/library/j-jsf1/
• Tutoriales JSF
• JSR 127
• JSR 252
• JSR 276
Labels parameters