Está en la página 1de 60

ACI 843 JAVA II

Clase 9: Introduccin a la Tecnologa JavaServer Faces

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

Objetivos
Conocer y emplear apropiadamente la tecnologa JSF en aplicaciones Web.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

Contenidos
Qu es una Aplicacin JavaServer Faces? Roles del Equipo de Programacin Aplicacin JSF Sencilla Ciclo de Vida de una pgina JSF Modelo de Componentes de Interfaz de Usuario Modelo de Navegacin Creacin del Bean Controlado Configuracin de la Aplicacin Conclusiones Referencias
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
3

La Tecnologa JavaServer Faces


La tecnologia JavaServer Faces es un marco de trabajo (framework) de interfaces de usuario del lado de servidor para aplicaciones Web basadas en tecnologa Java. Los principales componentes de la tecnologa JavaServer Faces son:
1. Un API y una implementacin de referencia para: representar componentes UI y manejar su estado; manejo de eventos, validacin del lado del servidor y conversin de datos; definir la navegacin entre pginas; soportar internacionalizacin y accesibilidad; y proporcionar extensibilidad para todas estas caractersticas. 2. Una librera de etiquetas JavaServer Pages (JSP) personalizadas para dibujar componentes UI dentro de una pgina JSP.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

Este modelo de programacin bien definido y la librera de etiquetas para componentes UI facilitan de forma significativa la tarea de la construccin y mantenimiento de aplicaciones Web con UIs del lado del servidor. Con un mnimo esfuerzo, podemos:
Conectar eventos generados en el cliente a cdigo de la aplicacin en el lado del servidor. Mapear componentes UI a una pgina de datos del lado del servidor. Construir un UI con componentes reutilizables y extensibles. Grabar y restaurar el estado del UI ms all de la vida de las peticiones de servidor.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

Como se puede apreciar en la siguiente figura, el interfase de usuario creado con la tecnologa JavaServer Faces (representado por myUI en el grfico) se ejecuta en el servidor y se renderiza en el cliente.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

La pgina JSP, yform.jsp, dibuja los componentes del interfase de usuario con etiquetas personalizadas definidas por la tecnologa JavaServer Faces. El UI de la aplicacin Web (representado por myUI en la imagen) maneja los objetos referenciados por la pgina JSP:
Los objetos componentes que mapean las etiquetas sobre la pgina JSP. Los oyentes de eventos, validadores, y los conversores que est registrados en los componentes. Los objetos del modelo que encapsulan los datos y las funcionalidades de los componentes especficos de la aplicacin.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
7

Beneficios de la Tecnologa JavaServer Faces


Una de las grandes ventajas de la tecnologa JavaServer Faces es que ofrece una clara separacin entre el comportamiento y la presentacin. Las aplicaciones Web construidas con tecnologa JSP conseguan parcialmente esta separacin. Sin embargo, una aplicacin JSP no puede mapear peticiones HTTP al manejo de eventos especficos del componentes o manejar elementos UI como objetos con estado en el servidor. La tecnologa JavaServer Faces permite construir aplicaciones Web que implementan una separacin entre el comportamiento y la presentacin tradicionalmente ofrecidas por arquitectura UI del lado del cliente.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

Beneficios de la Tecnologa JavaServer Faces


La separacin de la lgica de la presentacin tambin le permite a cada miembro del equipo de desarrollo de una aplicacin Web enfocarse en su parte del proceso de desarrollo, y proporciona un sencillo modelo de programacin para enlazar todas las piezas. Por ejemplo, los Autores de pginas sin experiencia en programacin pueden usar las etiquetas de componentes UI de la tecnologa JavaServer Faces para enlazar cdigo de la aplicacin desde dentro de la pgina Web sin escribir ningn script.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
9

Beneficios (2)
Otro objetivo importante de la tecnologa JavaServer Faces es mejorar los conceptos familiares de componente-UI y capaWeb sin limitarnos a una tecnologa de script particular o un lenguaje de marcas. Aunque la tecnologa JavaServer Faces incluye una librera de etiquetas JSP personalizadas para representrar componentes en una pgina JSP, los APIs de la tecnologa JavaServer Faces se han creado directamente sobre el API JavaServlet. sto permite hacer algunas cosas:
usar otra tecnologa de presentacin junto a JSP, crear nuestros propios componentes personalizados directamente desde las clases de componentes y generar salida para diferentes dispositivos cliente.

Pero lo ms importante: la tecnologa JavaServer Faces proporciona una rica arquitectura para:
manejar el estado de los componentes, procesar los datos, validar la entrada del usuario y manejar eventos.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

10

Qu es una Aplicacin JavaServer Faces?


En su mayora, las aplicaciones JavaServer Faces son como cualquier otra aplicacin Web Java. Se ejecutan en un contenedor Servlet Java, y tpicamente contienen:
Componentes JavaBeans (llamados objetos del modelo en tecnologa JavaServer Faces) conteniendo datos y funcionalidades especficas de la aplicacin. Oyentes de Eventos. Pginas, cmo pginas JSP. Clases de utilidad del lado del servidor, como beans para acceder a las bases de datos.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
11

Adems de estos tems, una aplicacin JavaServer Faces tambin tiene:


Una librera de etiquetas personalizadas para dibujar componentes UI en una pgina. Una librera de etiquetas personalizadas para representar manejadores de eventos, validadores, y otras acciones. Componentes UI representados como objetos con estado en el servidor. Validadores, manejadores de eventos y manejadores de navegacin.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
12

Arquitectura de JSF

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

13

Toda aplicacin JavaServer Faces debe incluir una librera de etiquetas personalizadas que define las etiquetas que representan componentes UI y una librera de etiquetas para representar otras acciones importantes, como validadores y manejadores de eventos. La implementacin de JavaServer Faces proporciona estas dos libreras.
La librera de etiquetas de componentes elimina la necesidad de codificar componentes UI en HTML u otro lenguaje de marcas, resultando en componentes completamente reutilizables. La librera "core" hace fcil registrar eventos, validadores y otras acciones de los componentes.

La librera de etiquetas de componentes puede ser la librera html_basic incluida con la implementacin de referencia de la tecnologa JavaServer Faces, o podemos definir nuestra propia librera de etiquetas que dibuje componentes personalizados o que dibuje una salida distinta a HTML.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

14

Otra ventaja importante de las aplicaciones JavaServer Faces es que los componentes UI de la pgina estn representados en el servidor como objetos con estado. Esto permite a la aplicacin manipular el estado del componente y conectar los eventos generados por el cliente a cdigo en el lado del servidor. Finalmente, la tecnologa JavaServer Faces nos permite convertir y validar datos sobre componentes individuales y reportar cualquier error antes de que se actualicen los datos en el lado del servidor.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
15

Interfaz de usuario ejecutada en el servidor

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

16

Roles del Equipo de Programacin


Debido a la divisin de labores que permite el diseo de la tecnologa JavaServer Faces, el desarrollo y mantenimiento de una aplicacin JavaServer Faces se puede realizar muy rpida y fcilmente. Listado de los miembros de un equipo de desarrollo tpico:
Autores de Pginas, que utilizan un lenguaje de marcas, como HTML, para construir pginas para aplicaciones Web. Cuando se utiliza la tecnologa JavaServer Faces, los autores de pginas casi siempre usarn exclusivamente la librera de etiquetas. Desarrolladores de Aplicaciones, que programan los objetos del modelo, los manejadores de eventos, los validadores, y la navegacin de pginas. Los desarrolladores de aplicaciones tambin pueden proporcionar las clases de utilidad necesarias. Escritores de Componentes, que tienen experiencia en programar interfaces de usuario y prefieren crear componentes personalizados utilizando un lenguaje de programacin. Esta gente puede crear sus propios componentes directamente desde las clases del componente, o pueden extender los componentes estndar proporcionados por la tecnologa JavaServer Faces. Vendedores de Herramientas, que proporcionan herramientas que mejoran la tecnologa JavaServer Faces para hacer la construccin de interfaces de usuario en el lado del servidor incluso ms sencilla.

En muchos equipos, los desarrolladores individuales puede interpretar ms de uno de esos roles, sin embargo, an as es muy til considerar la tecnologa JavaServer Faces desde varias perspectivas basadas en la responsabilidad primaria.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

17

Aplicacin JavaServer Faces Sencilla


Esta seccin describe el proceso de desarrollo de una sencilla aplicacin JavaServer Faces. Veremos qu caractersticas contiene una tpica aplicacin JavaServer Faces, y qu hace cada rol en el desarrollo de la aplicacin. Pasos del Proceso de Desarrollo Desarrollar una sencilla aplicacin JavaServer Faces requiere la realizacin de estos pasos:

Estas tareas se pueden realizar simultneamente o en cualquier orden. Sin embargo, la gente que realice las tareas necesitar comunicarse durante el proceso de desarrollo. Por ejemplo, el autor de las pginas necesita saber los nombres de los objetos del modelo para poder acceder a ellos desde la pgina. Este ejemplo pedir que adivinemos un nmero del 0 al 10, ambos inclusive. La segunda pgina dir si hemos acertado. El ejemplo tambin chequea la validez de la entrada.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
18

1. Desarrollar los objetos del modelo, los que contendrn los datos. 2. Aadir las declaraciones del bean controlado al fichero de configuracin de la aplicacin. 3. Crear las pginas utilizando las etiquetas de componentes UI y las etiquetas "core". 4. Definir la navegacin entre las pginas.

1. Desarrollar los Objetos del Modelo 2. Aadir las Declaraciones del Bean Controlado 3. Crear las Pginas 4. Definir las Navegacin por las Pginas

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

19

Ciclo de Vida de una Pgina JavaServer Faces


El ciclo de vida de una pgina JavaServer Faces page is similar al de una pgina JSP: Sin embargo, debido a las caractersticas extras que ofrece la tecnologa JavaServer Faces, el ciclo de vida proporciona algunos servicios adicionales mediante la ejecucin de algunos pasos extras. Los pasos del ciclo de vida se ejecutan dependen de si la peticin se origin o no desde una aplicacin JavaServer Faces y si la respuesta es o no generada con la fase de renderizado del ciclo de vida de JavaServer Faces. Esta seccin explica los diferentes escenarios del ciclo de vida. Luego explica cada uno de estas fases del ciclo de vida utilizando el ejemplo guessNumber.
El cliente hace una peticin HTTP de la pgina y el servidor responde con la pgina traducida a HTML.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

20

Escenarios de Procesamiento del Ciclo de Vida de una Peticin


Una aplicacin JavaServer Faces soporta dos tipos diferentes de respuestas y dos tipos diferentes de peticiones: Respuesta Faces: Una respuesta servlet que se gener mediante la ejecucin de la fase Renderizar la Respuesta del ciclo de vida de procesamiento de la respuesta. Respuesta No-Faces: Una respuesta servlet que no se gener mediante la ejecucin de la fase Renderizar la Respuesta. Un ejemplo es una pgina JSP que no incorpora componentes JavaServer Faces. Peticin Faces: Una peticin servlet que fue enviada desde una Respuesta Faces prviamente generada. Un ejemplo es un formulario enviado desde un componente de interface de usuario JavaServer Faces, donde la URI de la peticin identifica el rbol de componentes JavaServer Faces para usar el procesamiento de peticin. Peticin No-Faces: Una peticin Servlet que fue enviada a un componente de aplicacin como un servlet o una pgina JSP, en vez de directamente a un componente JavaServer Faces.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

21

La combinacin de estas peticiones y respuestas resulta en tres posibles escenarios del ciclo de vida que pueden existir en una aplicacin JavaServer Faces: Escenario 1: Una Peticin No-Faces genera una Respuesta Faces: Escenario 2: Una Peticin Faces genera una Respuesta No-Faces: Escenario 3: Una Peticin Faces genera una Respuesta Faces:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
22

Escenario 1: Una Peticin No-Faces Nogenera una Respuesta Faces:


Un ejemplo de este escenario es cuando se pulsa un enlace de una pgina HTML que abre una pgina que contiene componentes JavaServer Faces. Para dibujar una Respuesta Faces desde una peticin No-Faces, una aplicacin debe proporcionar un mapeo FacesServlet en la URL de la pgina que contiene componentes JavaServer Faces. FacesServlet acepta peticiones entrantes y pasa a la implementacin del ciclo de vida para su procesamiento.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
23

Escenario 2: Una Peticin Faces genera una Respuesta No-Faces No Algunas veces una aplicacin JavaServer Faces podra necesitar redirigir la salida a un recurso diferente de la aplicacin Web diferente o generar una respuesta que no contiene componentes JavaServer Faces. En estas situaciones, el desarrollador debe saltarse la fase de renderizado (Renderizar la Respuesta) llamando a FacesContext.responseComplete. FacesContext Contiene toda la informacin osociada con una Peticin Faces particular. Este mtodo se puede invocar durante las fases Aplicar los Valores de Respuesta, Procesar Validaciones o Actualizar los Valores del Modelo.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

24

Escenario 3: Una Peticin Faces genera una Respuesta Faces:


Es el escenario ms comn en el ciclo de vida de una aplicacin JavaServer Faces. Este escenario implica componentes JavaServer Faces enviando una peticin a una aplicacin JavaServer Faces utilizando el FacesServlet. Como la peticin ha sido manejada por la implementacin JavaServer Faces, la aplicacin no necesita pasos adicionales para generar la respuesta. Todos los oyentes, validadores y conversores sern invocados automticamente durante la fase apropiada del ciclo de vida estndar, como se describe en la siguiente seccin.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

25

Ciclo de Vida Estndar de Procesamiento de Peticiones


La mayora de los usuarios de la tecnologa JavaServer Faces no necesitarn conocer a fondo el ciclo de vida de procesamiento de una peticin. Sin embargo, conociendo lo que la tecnologa JavaServer Faces realiza para procesar una pgina, un desarrollador de aplicaciones JavaServer Faces no necesitar preocuparse de los problemas de renderizado asociados con otras tecnologas UI. Un ejemplo sera el cambio de estado de los componentes individuales. Si la seleccin de un componente como un checkbox afecta a la apariencia de otro componente de la pgina, la tecnologa JavaServer Faces manejar este evento de la forma apropiada y no permitir que se dibuje la pgina sin reflejar este cambio.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
26

La siguiente figura ilustra los pasos del ciclo de vida peticinrespuesta JavaServer Faces

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

27

Reconstituir el rbol de Componentes


Cuando se hace una peticin para una pgina JavaServer Faces, como cuando se pulsa sobre un enlace o un botn, la implementacin JavaServer Faces comienza el estado Reconstituir el rbol de Componentes. Durante esta fase, la implementacin JavaServer Faces construye el rbol de componentes de la pgina JavaServer Faces, conecta los manejadores de eventos y los validadores y graba el estado en el FacesContext. El rbol de componentes de la pgina greeting.jsp del ejemplo guessNumber se parecera a esto:

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

28

Aplicar Valores de la Peticin


Una vez construido el rbol de componentes, cada componente del rbol extrae su nuevo valor desde los parmetros de la peticin con su mtodo decode. Entonces el valor es almacenado localmente en el componente. Si falla la conversin del valor, se genera un mensaje de error asociado con el componete y se pone en la cola de FacesContext. Este mensaje se mostrar durante la fase Renderizar la Respuesta, junto con cualquier error de validacin resultante de la fase Procesar Validaciones. Si durante esta fase se produce algn evento, la implementacin JavaServer Faces emite los eventos a los oyentes interesados. En este punto, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. En el caso del componente userNumber de la pgina greeting.jsp, el valor es cualquier cosa que el usuario introduzca en el campo. Como la propiedad del objeto del model unida al componente tiene un tipo Integer, la implementacin JavaServer Faces convierte el valor de un String a un Integer. En este momento, se han puesto los nuevos valores en los componentes y los mensajes y eventos se han puesto en sus colas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
29

Procesar Validaciones
Durante esta fase, la implementacin JavaServer Faces procesa todas las validaciones registradas con los componentes del rbol. Examina los atributos del componente que especifican las reglas de validacin y compara esas reglas con el valor local almacenado en el componente. Si el valor local no es vlido, la implementacin JavaServer Faces aade un mensaje de error al FacesContext y el ciclo de vida avanza directamente hasta la fase Renderizar las Respuesta para que la pgina sea dibujada de nuevo incluyendo los mensajes de error. Si haba errores de conversin de la fase Aplicar los Valores a la Peticin, tambin se mostrarn. En este momento, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. Si se han disparado eventos durante esta fase, la implemetnacin JavaServer Faces los emite a los oyentes interesados. En la pgina greeting.jsp, la implementacin JavaServer Faces procesa el validador sobre la etiqueta input_number de UserNumber. Verifica que el dato introducido por el usuario en el campo de texto es un entero entre 0 y 10. Si el dato no es vlido, o ocurri un error de converisn durante la fase Aplicar los Valores a la Peticin, el procesamiento salta a la fase Renderizar las Respuesta, durante la que se dibujar de nuevo la pgina greeting.jsp mostrando los mensajes de error de conversin o validacin en el componente asociado con la etiqueta output_errors.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

30

Actualizar los Valores del Modelo


Una vez que la implementacin JavaServer Faces determina que el dato es vlido, puede pasar por el rbol de componentes y configurar los valores del objeto de modelo correspondiente con los valores locales de los componentes. Slo se actualizarn los componentes que tenga expresiones valueRef. Si el dato local no se puede convertir a los tipos especificados por las propiedades del objeto del modelo, el ciclo de vida avanza directamente a la fase Renderizar las Respuesta, durante la que se dibujar de nuevo la pgina mostrndo los errores, similar a lo que sucede con los errores de validacin. En este punto, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. Si se han disparado eventos durante esta fase, la implemetnacin JavaServer Faces los emite a los oyentes interesados. En esta fase, a la propiedad userNumber del UserNumberBean se le da el valor del componente userNumber.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
31

Invocar Aplicacin
Durante esta fase, la implementacin JavaServer Faces maneja cualquier evento a nivel de aplicacin, como enviar un formulario o enlazar a otra pgina. En este momento, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. La pgina greeting.jsp del ejemplo guessNumber tiene asociado un evento a nivel de aplicacin con el componente Command. Cuando se procesa este evento, una implementacin de ActionListener por defecto recupera la salida, success, desde el atributo action del componente. El oyente pasa la salida al NavigationHandler por defecto. Y ste contrasta la salida con las reglas de navegacin definidas en el fichero de configuracin de la aplicacin para determinar qu pgina se debe mostrar luego. Luego la implementacin JavaServer Faces configura el rbol de componentes de la respuesta a esa nueva pgina. Finalmente, la implementacin JavaServer Faces transfiere el control a la fase Renderizar la Respuesta.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
32

Renderizar la Respuesta
Durante esta fase, la implementacin JavaServer Faces invoca las propiedades de codificacin de los componentes y dibuja los componentes del rbol de componentes grabado en el FacesContext. Si se encontraron errores durante las fases Aplicar los Valores a la Peticin, Procesar Validaciones o Actualizar los Valores del Modelo, se dibujar la pgina original. Si las pginas contienen etiquetas output_errors, cualquier mensaje de error que haya en la cola se mostrar en la pgina. Se pueden aadir nuevos componentes en el rbol si la aplicacin incluye renderizadores personalizados, que definen cmo renderizar un componente. Despus de que se haya renderizado el contenido del rbol, ste se graba para que las siguientes peticiones puedan acceder a l y est disponible para la fase Reconstituir el rbol de Componentes de las siguientes llamadas.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

33

Modelo de Componentes de Interface de Usuario


Los componentes UI JavaServer Faces son elementos configurables y reutilizables que componen el interface de usuario de las aplicaciones JavaServer Faces. Un componente puede ser simple, como un botn, o compuesto, como una tabla, que puede estar compuesta por varios componentes. La tecnologa JavaServer Faces proporciona una arquitectura de componentes rica y flexible que incluye: Un conjunto de clases UIComponent para especificar el estado y comportamiento de componentes UI. Un modelo de renderizado que define cmo renderizar los componentes de diferentes formas. Un modelo de eventos y oyentes que define cmo manejar los eventos de los componentes. Un modelo de conversin que define cmo conectar conversores de datos a un componente. Un modelo de validacin que define cmo registrar validadores con un componente.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

34

Las Clases de los Componentes del Interface de Usuario


La tecnologa JavaServer Faces proporciona un conjunto de clases de componentes UI, que especifican toda la funcionalidad del componente, cmo mantener su estado, mantener una referencia a objetos del modelo, y dirigir el manejo de eventos y el renderizado para un conjunto de componentes estndar. Estas clases son completamente extensibles, lo que significa que podemos extenderlas para crear nuestros propios componentes personalizados. Todas las clases de componentes UI de JavaServer Faces descienden de la clase UIComponentBase, que define el estado y el comportamiento por defecto de un UIComponent. El conjunto de clases de componentes UI incluido en la ltima versin de JavaServer Faces es:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
35

UICommand: Representa un control que dispara actions cuando se activa. UIForm: Encapsula un grupo de controles que envan datos de la aplicacin. Este componente es anlogo a la etiqueta form de HTML. UIGraphic: Muestra una imagen. UIInput: Toma datos de entrada del usuario. Esta clase es una subclase de UIOutput. UIOutput: Muestra la salida de datos en un pgina. UIPanel: Muestra una tabla. UIParameter: Representa la sustitucin de parmetros. UISelectItem: Representa un slo tem de un conjunto de tems. UISelectItems: Representa un conjunto completo de tems. UISelectBoolean: Permite a un usuario seleccionar un valor booleano en un control, selececcionndolo o deseleccionndolo. Esta clase es una subclase de UIInput. UISelectMany: Permite al usuario seleccionar varios tems de un grupo de tems. Esta clase es una subclase de UIInput. UISelectOne: Permite al usuario seleccionar un tem de un grupo de tems. Esta clase es una subclase de UIInput.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

36

La mayora de los autores de pginas y de los desarrolladores de aplicaciones no tendrn que utilizar estas clases directamente. En su lugar, incluirn los componentes en una pgina usando la etiqueta correspondiente al componente. La mayora de estos componentes se pueden renderizar de formas diferentes. Por ejemplo, un UICommand se puede renderizar como un botn o como un hiperenlace.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
37

El Modelo de Renderizado de Componentes


La arquitectura de componentes JavaServer Faces est diseada para que la funcionalidad de los componentes se defina mediante las clases de componentes, mientras que el renderizado de los componentes se puede definir mediante un renderizador separado. Este diseo tiene varios beneficios: Los escritores de componentes pueden definir slo una vez el comportamiento de un componente, pero pueden crear varios renderizadores, cada uno de los cuales define una forma diferente de dibujar el componente para el mismo cliente o para diferentes clientes. Los autores de pginas y los desarrolladores de aplicaciones pueden modificar la apariencia de un componente de la pgona seleccionando la etiqueta que representa la combinacin componente/renderizador apropiada.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

38

Un kit renderizador define como se mapean las clases de los componentes a las etiquetas de componentes apropiadas para un cliente particular. La implementacin JavaServer Faces incluye un RenderKit estndar para renderizar a un cliente HTML. Por cada componente UI que soporte un RenderKit, ste define un conjunto de objetos Renderer. Cada objeto Renderer define una forma diferente de dibujar el componente particular en la salida definida por el RenderKit. Por ejemplo, un componente UISelectOne tiene tres renderizadores diferentes. Uno de ellos dibuja el componente como un conjunto de botones de radio. Otro dibuja el componente como un ComboBox. Y el tercero dibuja el componente como un ListBox. Cada etiqueta JSP personalizada en el RenderKit de HTML, est compuesta por la funcionalidad del componetne, definida en la clase UIComponent, y los atributos de renderizado, definidos por el Renderer. Por ejemplo, las dos etiquetas que podemos ver en la siguiente tabla representan un componente UICommand, renderizado de dos formas diferentes:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
39

La parte command de las etiquetas corresponde con la clase UICommand, y especifica la funcionalidad, que es disparar un action. Las partes del botn y el hiperenlace de las etiquetas corresponden a un renderizador independiente, que define cmo dibujar el componente. La implementacin de referencia de JavaServer Faces proporciona una librera de etiquetas personalizadas para renderizar componentes en HTML. Soporta todos los componentes listados en la siguiente tabla:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
40

Modelo de Conversin
Una aplicacin JavaServer Faces opcionalmente puede asociar un componente con datos del objeto del modelo del lado del servidor. Este objeto del modelo es un componente JavaBeans que encapsula los datos de un conjunto de componentes. Una aplicacin obtiene y configura los datos del objeto modelo para un componente llamando a las propiedades apropiadas del objeto modelo para ese componente. Cuando un componente se une a un objeto modelo, la aplicacin tiene dos vistas de los datos del componente: la vista modelo y la vista presentacin, que representa los datos de un forma que el usuario pueda verlos y modificarlos. Una aplicacin JavaServer Faces debe asegurarse que los datos del componente puedan ser convertidos entre la vista del modelo y la vista de presentacin. Esta conversin normalmente la realiza automticamente el renderizador del componente. En algunas situaciones, podramos querer convertir un dato de un componente a un tipo no soportado por el renderizador del componente. Para facilitar esto, la tecnologa JavaServer Faces incluye un conjunto de implementaciones estndar de Converter que nos permite crear nuestros conversores personalizados. La implementacin de Converter convierte los datos del componente entre las dos vistas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
41

Modelo de Eventos y Oyentes


Un objetivo de la especificacin JavaServer Faces es mejorar los modelos y paradigmas existentes para que los desarrolladores se puedan familiarizar rpidamente con el uso de JavaServer Faces en sus aplicaciones. En este espritu, el modelo de eventos y oyentes de JavaServer Faces mejora el diseo del modelo de eventos de JavaBeans, que es familiar para los desarrolladores de GUI y de aplicaciones Web. Al igual que la arquitectura de componentes JavaBeans, la tecnologiaa JavaServer Faces define las clases Listener y Event que una aplicacin puede utilizar para manejar eventos generados por componentes UI. Un objeto Event identifica al componente que lo gener y almacena informacin sobre el propio evento. Para ser notificado de un evento, una aplicacin debe proporcionar una implementacin de la clase Listener y registrarla con el componente que genera el evento. Cuando el usuario activa un componente, como cuando pulsa un botn, se dispara un evento. Esto hace que la implementacin de JavaServer Faces invoque al mtodo oyente que procesa el evento. JavaServer Faces soporta dos tipos de eventos: eventos value-changed y eventos action.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
42

Un evento value-changed ocurre cuando el usuario cambia el valor de un componente. Un ejemplo es seleccionar un checkbox, que resulta en que el valor del componente ha cambiado a true. Los tipos de componentes que generan estos eventos son los componentes UIInput, UISelectOne, UISelectMany, y UISelectBoolean. Este tipo de eventos slo se dispara si no se detecta un error de validacin. Un evento action ocurre cuando el usuario pulsa un botn o un hiperenlace. El componente UICommand genera este evento.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
43

Modelo de Validacin
La tecnologa JavaServer Faces soporta un mecanismo para validar el dato local de un componente durante la fase del Proceso de Validacin, antes de actualizar los datos del objeto modelo. Al igual que el modelo de conversin, el modelo de validacin define un conjunto de clases estndar para realizar chequeos de validacin comunes. La librera de etiquetas jsf-core tambin define un conjunto de etiquetas que corresponden con las implementaciones estndar de Validator. La mayorra de las etiquetas tienen un conjunto de atributos para configurar las propiedades del validador, como los valores mximo y mnimo permitidos para el dato del componente. El autor de la pgina registra el validador con un componente anidando la etiqueta del validador dentro de la etiqueta del componente. Al igual que el modelo de conversin, el modelo de validacin nos permite crear nuestras propias implementaciones de Validator y la etiqueta correspondiente para realizar validaciones personalizadas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
44

Modelo de Navegacin
Virtualmente todas las aplicaciones Web estn hechas de un conjunto de pginas. Uno de los principales problemas de un desarrollador de aplicaciones Web es manejar la navegacin entre esas pginas. El nuevo modelo de navegacin de JavaServer Faces facilita la definicin de la navegacin de pginas y el manejo de cualquier procesamiento adicional necesario para elegir la secuencia en se que cargan las pginas. En muchos casos, no se requiere cdigo para definir la navegacin. En su lugar, la navegacin se puede definir completamente en el fichero de configuracin de la aplicacin usando un pequeo conjunto de elementos XML. La nica situacin en que necesitaremos proporcionar algo de cdigo es si necesitamos algn procesamiento adicional para determinar qu pgina mostrar luego.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

45

Modelo de Navegacin (2)


Para cargar la siguiente pgina en una aplicacin Web, el usuario normalmente pulsa un botn. Como vimos anteriormente, una pulsacin de botn genera un evento action. La implementacin de JavaServer Faces proporciona un nuevo oyente de eventos action por defecto para manejar este evento. Este oyente determina la salida del evento action, como success o failure. Esta salida se puede definir como una propiedad String del componente que gener el evento o como el resultado de un procesamientro extra realizado en un objeto Action asociado con el componente. Despus de determinar la salida, el oyente la pasa al ejemplar de NavigationHandler asociado con la aplicacin. Basndose en la salida devuelta, el NavigationHandler selecciona la pgina apropiada consultando el fichero de configuracin de la aplicacin.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
46

Creacin del Bean Controlado


Otra funcin crtica de las aplicaciones Web es el manejo apropiado de los recursos. Esto incluye la separacin de la definicin de objetos componentes UI de los objetos de datos y almacenar y manejar estos ejemplares de objetos en el mbito apropiado. Las versiones anteriores de la tecnologa JavaServer Faces nos permitan crear objetos del modelo que encapsulaban los datos y la lgica del negocio separadamente de los objetos de componentes UI y almacenarlos en un mbito particular. La nueva versin especifica completamente cmo se crean y se manejan estos objetos. Esta versin presenta APIs para: Evaluar una expresin que se refiere a un objeto del modelo, una propiedad de un objeto del modelo, u otro tipo de datos primitivo o estructura de datos. Esto se hace con el API Value-Binding. Recuperar un objeto desde el mbito. Esto se hace con el API VariableResolver. Crear un objeto y almacenarlo en un mbito si no est ya all. Esto se hace con el VariableResolver por defecto, llamada la Facilidad Bean Controlado, que se configura con el fichero del configuracin de la aplicacin descrito en la siguiente pgina.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

47

Configuracin de la Aplicacin
En las pginas anteriores hemos visto los distintos recursos disponibles para una aplicacin JavaServer Faces. Esto incluye, conversores, validadores, componentes, objetos del modelo, acciones, manejadores de navegacin y otros. En las versiones anteriores, estos recursos tenan que ser configurados programticamente. Se requera un ApplicationHandler para definir la navegacin de pginas, y un ServletContextListener para registrar conversores, validadores renderizadores, etc. Esta versin presenta un formato de configuracin de recursos configurable (como un documento XML) para configurar los recursos requeridos por una aplicacin en el momento de la arrancada. Este nueva caracterstica elimina la necesidad de un ApplicatonHandler y un ServletContextListener. En posteriores tutoriales sobre JSF veremos como configurar los recursos en el fichero XML.

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

48

En las versiones anteriores, una vez que se creaban los recursos, la informacin utilizada por algunos de ellos se almacenaba en el FacesContext, que representa informacin contextual para una peticin dada. Estos recursos normalmente estn disponibles durante el ciclo de vida de la aplicacin. Por lo tanto, es ms apropiado recuperar la informacin de estos recursos desde un slo objeto que es ejemplarizado para cada aplicacin. Esta versin de JavaServer Faces presenta la clase Application, que se crea automticamente por cada aplicacin. La clase Application acta como factora centralizada de recursos como conversores y recursos de mensajes que estn definidos en el fichero XML. Cuando una aplicacin necesita acceder a alguna informacin sobre uno de los recursos definidos en el fichero XML, primero recupera un ejemplar de Application de un ApplicationFactory y luego recupera el ejemplar del recurso de la aplicacin

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

49

Conclusiones
La tecnologa JSF, por diseo, es particularmente til con aplicaciones basadas en la arquitectura MVC (Model-View-Controller).

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

50

Bibliografa
Introduccin a la Tecnologa JavaServer Faces Integracin de JSF, Spring e Hibernate para crear una Aplicacin Web del Mundo Real JSF - Java Server Faces (y comparacin con Struts) Web Tier With JavaServer Faces, en Java BluePrints Solutions Catalog -> JSF Tutorial (por Marty Hall, autor del texto gua Core Servlets) Developing Web Applications with JavaServer Faces Proyecto con JSF Java Server Faces Myfaces, Maven y Eclipse Guia JSF Introduccin a Ajax4jsf
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

51

JSF - Java Server Faces (y comparacin con Struts)


http://www.adictosaltrabajo.c om/tutoriales/tutoriales.php? pagina=jsf

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

52

Uno de los patrones ms conocidos en el desarrollo Web es el patrn MVC (Modelo Vista Controlador). Este patrn nos permite/obliga a separar la lgica de control (sabe que cosas hay que hacer pero no como), la lgica de negocio (sabe como se hacen las cosas) y la lgica de presentacin (sabe como interactuar con el usuario). Utilizando este tipo de patrones conseguimos: ms calidad, mejores posibilidades de mantenimiento, perder el miedo al folio en blanco (tengo un patrn a seguir al empezar un proyecto), ... pero una de las cosas ms importantes es la normalizacin y estandarizacin del desarrollo de Software. En este tutorial vamos a ver un framework de desarrollo que sigue el patrn MVC. Los frameworks son muy tiles ya que nos permiten no tener que reinventar la rueda cada vez. Es decir el framework no slo sigue el patrn, sino que me da unas directrices de trabajo, y nos da gran parte del trabajo ya hecho (en forma de libreras, aplicaciones, ...).

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

53

JSF (Java Server Faces) es un framework de desarrollo basado en el patrn MVC (Modelo Vista Controlador). Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones Web. Hay que tener en cuenta JSF es posterior a Struts, y por lo tanto se a nutrido de la experiencia de este, mejorando algunas sus deficiencias. De hecho el creador de Struts (Craig R. McClanahan) tambin es lder de la especificacin de JSF. A continuacin presento algunos de los puntos por los que JSF me parece una tecnologa muy interesante (incluso ms que Struts ;) Especificaciones que definen JSF:
JSR 127 (http://www.jcp.org/en/jsr/detail?id=127) JSR 252 (http://www.jcp.org/en/jsr/detail?id=252) JSR 276 (http://www.jcp.org/en/jsr/detail?id=276)

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

54

JSF trata la vista (el interfaz de usuario) de una forma algo diferente a lo que estamos acostumbrados en aplicaciones Web. Sera ms similar al estilo de Swing, Visual Basic o Delphi, donde la programacin del interfaz se hace a travs de componentes y basada en eventos (se pulsa un botn, cambia el valor de un campo, ...). JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, o crear nuestros propios render para pintar los componentes segn nos convenga. Es ms sencillo. JSF no puede competir en madurez con Struts (en este punto Struts es claro ganador), pero si puede ser una opcin muy recomendable para nuevos desarrollos, sobre todo si todava no tenemos experiencia con Struts. Comparativa ms a fondo entre Struts y JSF

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

55

Archivos del proyecto:


customize.jsp: Esta ser la ventana inicial de la aplicacin. Es un simple formulario de entrada donde podemos personalizar los colores de nuestro CV (Resume en ingles), introducir nuestro nombre, la edad, y nuestra profesin. same-color.jsp: Esta pantalla muestra un mensaje de error cuando se selecciona el mismo color para el fondo y para las letras. show-preview.jsp: Muestra un borrador del CV segn lo que hemos puesto en el formulario de la ventana inicial. Archivos de Recursos:
MessageResources_es.properties MessageResources_en.properties
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
56

Archivos del proyecto (2)


ResumeBean.java: Este bean es el que guardar toda la informacin recogida en el formulario. El equivalente en Struts sera una mezcla entre la clase de formulario (ActionForm) y la clase accin (Action). Esto lo podramos ver como una ventaja ya que simplifica el cdigo, aunque si nos gusta ms la aproximacin de Struts tambin es posible hacer dos clases distintas en JSF (ejemplo de la mayor flexibilidad de JSF frente a Struts). faces-config.xml: Es donde se configura JSF. Es como el pegamento que une modelo, vista y controlador. El equivalente en Struts sera el fichero struts-config.xml. En este archivo se declaran:
los beans a utilizar para recoger la informacin de los formularios (en el struts-config.xml tenamos una seccin similar), y las reglas de navegacin (en el struts-config-xml se podra comparar con la definicin de forwards de las acciones).

2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre

57

Internacionalizacin (i18n)
La internacionalizacin va a permitir mostrar la aplicacin segn el idioma del usuario. Para ello en el archivo faces-config.xml se especifican que localizaciones soporta la aplicacin y cual es la localizacin por defecto:
<application> <locale-config> <default-locale>es</default-locale> <supported-locale>en</supported-locale> </locale-config> </application>
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
58

Internacionalizacin (2)
Ejemplo de uso de i18n, que podemos encontrar en el fichero customize.jsp:
... <html> <f:view> <f:loadBundle basename="MessageResources" var="msg"/> <head> <title>${msg.customize_title}</title> </head> <body> ...

En el ejemplo se puede ver como lo primero que se hace es cargar el archivo de recursos. El sistema se encargar de seleccionar el apropiado segn el lenguaje, y si se trata de un lenguaje no soportado se seleccionar el idioma por defecto. Una vez cargado el archivo de recursos es tan fcil usarlo como ${msg.customize_title} donde msg es el identificador que se le di al fichero de recursos y cutomize_title es la clave del mensaje a mostrar.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
59

Conclusiones
Con JSF no se trabaja con objetos de tipo HttpSession, HttpServletRequest, ... esto es una ventaja ya que no hay prcticamente acoplamiento entre nuestra aplicacin y el hecho de que el interfaz de usuario sea a travs de HTTP. JSF surge como un framework muy prometedor, y una opcin muy recomendable para nuevos desarrollos. Ojo: ningn framework resuelve todas las problemticas. El ejemplo ms sencillo para comprender esta afirmacin es pensar en un aplicacin Web y en un portal. En el primer caso el usuario interacta con la aplicacin introduciendo unos datos y esperando obtener unos resultados, en el segundo caso el usuario puede navegar por distintas pantallas de informacin, donde esta informacin seguramente cambia a lo largo del tiempo (cada da, semana, mes, ...). Para las aplicaciones Web pueden ser muy convenientes frameworks como JSF, Struts, Spring, ... Pero estos no nos servirn (o ser muy trabajoso) para hacer portales. Para este segundo caso sera ms adecuado usar gestores de contenidos como Lenya, OpenCMS, etc...
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
60

También podría gustarte