Sei sulla pagina 1di 7

JavaServer Facelets es un framework para plantillas (templates) centrado en la tecnologa JSF (JavaServer Faces), por lo cual se integran de manera

muy fcil. Facelets es un framework de templating que nos facilita la gestin de la estructura y el estilo de las jsp, lo cual tiene beneficios en cuanto a reutilizacin de cdigo en la capa de presentacin y por consecuencia eleva la mantenibilidad de esta capa al usar facelets nuestro proyecto se basar en una plantilla, que contendr la estructura de la presentacin (jsp) y las definiciones de estilo, en esta plantilla definimos zonas o reas (como el header, men, espacios comunes) y el motor de facelets se encargar de llenar esas reas con el contenido apropiado, as por ejemplo no tendremos el header en todas las jsp y si despus de un tiempo algo tiene que cambiar se har solo en la plantilla en lugar de hacerlo en cada pgina Este framework incluye muchas caractersticas siendo las ms importantes:

Tiempo de desarrollo cero de los tags para UIComponents. Facilidad en la creacin del templating para los componentes y pginas. Habilidad de separar los UIComponents en diferentes archivos. Un buen sistema de reporte de errores. Soporte completo a EL (Expression Language). Validacin de EL en tiempo de construccin. No es necesaria configuracin XML. Trabaja con cualquier RenderKit. Desafortunadamente JSP (JavaServer Pages) y JSF no se complementan naturalmente, cuando se usan juntos ambos escriben output al response, pero lo hacen de una manera diferente: JSP crea output ni bien encuentra cdigo JSP (es decir procesa los elementos de la pgina de arriba a abajo), mientras que JSF dicta su propio re-rendering (ya que su ciclo de vida est dividido en fases marcadas). Facelets llena este vaco entre JSP y JSF, siendo una tecnologa centrada en crear rboles de componentes y estar relacionado con el complejo ciclo de vida JSF.

POR QU FACELETS?

No depende de un contenedor Web.

Integrar JSP con JSF trae problemas, adems, no se puede usar JSTL (JavaServer Pages Standard Tag Library) con JSF, cosa que Facelets s provee.

Facelets provee un proceso de compilacin ms rpido que JSP. Provee templating, lo cual implica reutilizacin de cdigo, simplificacin de desarrollo y facilidad en el mantenimiento de grandes aplicaciones. Permite crear componentes ligeros sin necesidad de crear los tags de los UIComponents (es ms fcil comparado a crear un componente JSF puro). Soporta Unified Expression Language, incluyendo soporte para funciones EL y validacin de EL en tiempo de compilacin. Cuando se hizo JSF la intencion era usar JSP como la principal tecnologia para crear paginas. Por desgracia, JSP y JSF no se comlpementan el uno al otro. JSP se usa para crear contenido estatico o dinamico que se procesa de arriba a abajo pero no sirve para crear arboles de componentes. JSF, por su parte, tiene un ciclo de vida mucho mas complejo que JSP y la generacion y el renderizado de los componentes ocurre en diferentes fases del ciclo. Facelets se hizo para rellenar esa carencia. Es una tecnologia que permite crear arboles de componentes que, a la vez, puede intercambiar contenido con el complejo ciclo de vida de los JSF. Facelets sustituye JSP con una API muy directa que refleja perfectamente sus principios de simplicidad, y a su vez, incorpora algunas funcionalidades para el desarrollador.

TEMPLATING
Existen templating: tres maneras de modularizar las pginas y

componentes: includes, archivos tag y decorators. Pero primero algo bsico de

TRES MANERAS DE MODULARIZAR CON FACELETS


Esta es la porcin de cdigo que se abstraer para los ejemplos siguientes: <ui:composition> Bienvenido, #{usuario.nombre}

</ui:composition>

TEMPLATING MEDIANTE INCLUDES Este es el mtodo ms familiar para modularizar componentes (se le pueden pasar parmetros al ui:include). <span id="loginDisplay"> <ui:include src="/contenido/bienvenido.xhtml" > <ui:param name="usuario" value="#{usuarioActual}"/> </ui:include> </span>

TEMPLATING MEDIANTE UN TAG FILE Para esta manera de templating, al tag se le da un namespace, por ejemplo: <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jstl/core" xmlns:my="http://www.mycompany.com/jsf"> ... <!-- uso del tag --> <my:bienvenido usuario="#{usuarioActual}" /> ... </ui:composition> Cmo especificamos el tag?: en un archivo xml, que es una libreria de tags facelets. Este archivo es cargado automticamente por Facelets, para ello debe tener la extensin *.taglib.xml y estar ubicado en el directorio especial METAINF. <facelet-taglib> <namespace>http://www.mycompany.com/jsf</namespace> <tag> <tag-name>bienvenido</tag-name> <source>contenido/bienvenido.xhtml</source> </tag> ... <!-- otros tags --> </facelet-taglib>

TEMPLATING MEDIANTE DECORATORS Los decorators se pueden usar de la misma manera que los compositions, pero stos pueden ser insertados en la pgina (inline). El texto anterior se mostrar. <ui:decorate template="/contenido/bienvenido.xhtml"> <ui:param name="usuario" value="#{usuarioActual}" /> </ui:decorate> El texto posterior se mostrar.

PERO EN REALIDAD QUE ES FACELETS?, para entenderlo enumerare sus caractersticas:


Es un framework para trabajar con plantillas. Creacin de componentes personalizados. Utilizacin de etiquetas lgicas.

PERO QUE DIFERENCIA FACELETS DE LOS JSP?


JSP son etiquetas para plantillas que al compilarse generan servlets. Facelets es un lenguaje de plantillas para construir un rbol de componentes, no un servlet. Por otra parte Facelet fue creado para cumplir con el ciclo de vida de JSF, al contrario de los JSP que el ciclo de vida de los servlet producidos es independiente al de JSF.

EL SISTEMA DE PLANTILLAS DE FACELETS.


Las plantillas nos evitan problemas, nos abaratan recursos, nos da un formato uniforme a la aplicacin, nos centraliza la vista que es comn a todas las pginas. Supongamos que no usamos plantillas, y tenemos 4 paginas distintas, al no tener una plantilla repetiramos el mismo cdigo html (u otro) en todas las paginas, generndonos espacio, y si quisierasmo modificar un men por ejemplo, deberamos modificarlos en cada una de las paginas de nuestra aplicacin, con las plantillas solo tenemos un men, que es referenciado a las dems paginas y al modificar solo modificamos una vez y este cambio se reflejan en todas las paginas que hagan uso de la plantilla modificada. JavaServer Facelets es un framework para plantillas (templates) centrado en la

tecnologa JSF (JavaServer Faces), por lo cual se integran de manera muy fcil. Este framework incluye muchas caractersticas siendo las ms importantes: .

Tiempo de desarrollo cero de los tags para UIComponents. Facilidad en la creacin del templating para los componentes y pginas Habilidad de separar los UIComponents en diferentes archivos. Un buen sistema de reporte de errores. Soporte completo a EL (Expression Language). Validacin de EL en tiempo de construccin. No es necesaria configuracin XML. Trabaja con cualquier RenderKit.

A partir de JSF 2.0, facelets viene incorporado, anteriormente haba que incluir y configurar la librera por separado, ahora y con la ayuda de netbeans esto se hace menos trabajoso. El sistema de plantillas es el mismo que tenamos con JSF 1.2, y se basa en el uso de las siguientes etiquetas:

ui:composition: envuelve un conjunto de componentes para ser reutilizados en otra pgina, es la etiqueta que: envuelve o puede envolver la plantilla. se utiliza para hacer referencia a una plantilla.

Todo lo que quede fuera de la etiqueta ui:composition no ser renderizado.

ui:define: define un contenido nombrado para ser insertado en una plantilla, su contenido es un conjunto de componentes y se identifica con un name. Ese conjunto de componentes ser insertado en una etiqueta ui:insert con el mismo name. ui:insert: declara un contenido nombrado que debe ser definido en otra pgina, ui:decorate: es la etiqueta que sirve para hacer referencia a una plantilla, como la etiqueta ui:composition, solo que con ui:decorate lo definido antes y despus de la etiqueta s ser renderizado, ui:param: nos sirve para declarar parmetros y su valor en el uso de plantillas y componentes por composicin, ui:include: es una etiqueta que sirve para incluir en una pgina el contenido de otra, como si el contenido de esta ltima formase parte de la primera.

COMPONENTES POR COMPOSICIN.


Los componentes por composicin son un tipo especial de plantillas que actan como componentes. Un componente por composicin es una pieza de cdigo reutilizable que proporciona cierta funcionalidad y consiste en una coleccin de otros componentes que ya existen. Con facelets, cualquier pgina xhtml puede convertirse en un componente por composicin, haciendo uso de las siguientes etiquetas:

composite:interface: declara el contrato de uso del componente por composicin. composite:implementation: define la implementacin del componente por composicin. Si existe un composite:interface, debe existir su composite:implementation correspondiente. composite:attribute: declara un atributo en el contrato del componente, en la interface. Es una etiqueta hija de composite:interface. composite:insertChildren: sustituye a la etiqueta ui:insert que antes usbamos en el componente para insertar el conjunto de nodos hijos que se puede declarar dentro del etiquetado que hace uso del componente por composicin. Se incluye dentro de la etiqueta composite:implementation. composite:valueHolder: permite exponer las propiedades y eventos de los componentes que implementan la interfaz ValueHolder para que sean asignados desde el cliente que hace uso del componente por composicin. Los componentes que implementan EditableValueHolder son todos aquellos que soportan el acceso a propiedades del lado de los ManagedBeans a travs de Expression Language y la posibilidad de asignar a dicha vinculacin un conversor (outputText, outputLabel, outputFormat,...) composite:editableValueHolder: permite exponer las propiedades y eventos de los componentes que implementan la interfaz EditableValueHolder para que sean asignados desde el cliente que hace uso del componente por composicin. EditableValueHolder es una extensin de ValueHolder que permite asociar al componente que la implementa validadores y eventos de cambio de valor (inputText, inputSecret, selectOneMenu, selectManyMenu, selectBooleanCheckBox,...). composite:actionSource: permite exponer las propiedades y eventos de los componentes que implementan la interfaz ActionSource para que sean asignados desde el cliente que hace uso del componente por composicin. Los componentes que implementan ActionSource son aquellos que soportan eventos de accin y listeners de eventos de accin (commandButton y commandLink).

http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=jsf2FaceletsTemplatesAnd CompositeComponents http://www.compujuy.com.ar/postx.php?id=91

http://nubumu.blogspot.mx/2008/10/facelets.html http://blogs.antartec.com/desarrolloweb/2008/12/facelets-y-jsf-uso-de-templates/

Potrebbero piacerti anche