Facelets




comenzando con una pequeñaintroducción y luego una descripción básica del uso de templating en una aplicación JSF(JavaServer Faces).

Introducción
 es un framework para plantillas (templates) centrado en la tecnología JSF(JavaServer Faces), por lo cual se integran de manera muy fácil. Este framework incluyemuchas características siendo las más importantes:
Tiempo de desarrollo cero de los tags para UIComponents.
Facilidad en la creación del templating para los componentes y páginas.
•Habilidad de separar los UIComponents en diferentes archivos.
•Un buen sistema de reporte de errores.
Soporte completo a EL (Expression Language).
Validación de EL en tiempo de construcción.
No es necesaria configuración 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 maneradiferente: JSP crea output ni bien encuentra código JSP (es decir procesa los elementos de lapágina de arriba a abajo), mientras que JSF dicta su propio re-rendering (ya que su ciclo devida está dividido en fases marcadas). Facelets llena este vacío entre JSP y JSF, siendo unatecnología centrada en crear árboles de componentes y estar relacionado con el complejo ciclode vida JSF.

¿Por qué Facelets?
No depende de un contenedor Web.
•Integrar JSP con JSF trae problemas, además, no se puede usar JSTL (JavaServer Pages Standard Tag Library) con JSF, cosa que Facelets sí provee.
Facelets provee un proceso de compilación más rápido que JSP.
•Provee templating, lo cual implica reutilización de código, simplificación de desarrollo yfacilidad en el mantenimiento de grandes aplicaciones.
•Permite crear componentes ligeros sin necesidad de crear los tags de losUIComponents (es más fácil comparado a crear un componente JSF puro).
Soporta Unified Expression Language, incluyendo soporte para funciones EL yvalidación de EL en tiempo de compilación.
Templating

Existen tres maneras de modularizar las páginas y componentes:
includes, archivos tag y decorators. Pero primero algo básico de templating:

La página que contendrá al template:
<html
 xmlns="http://www.w3.org/1999/xhtml"  xmlns:ui="http://java.sun.com/jsf/facelets"  xmlns:h="http://java.sun.com/jsf/html"  xmlns:f="http://java.sun.com/jsf/core"  xmlns:c="http://java.sun.com/jstl/core">
 <head> 
 <ui:insert name="head" />  
 </head> 
  <body> 
                 <div  class="body"
  <ui:insert name="body"
Contenido por defecto 
 </ui:insert> 
  </div> 
  </body> 
  </html> 

El template en sí:

 <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"  template="/template.xhtml"
<!-- nótese el uso del atributo 'template' --> 
 <ui:define name="head"
                <!-- contenido de la cabecera --> 
 </ui:define> 

 <ui:define name="body"
                <!-- contenido del cuerpo --> 
  </ui:define> 
 </ui:composition> 

Como puede verse donde uno quiere que se inserte código se usa el tag <ui:insertname=”nombre”/> donde nombre corresponde al identificador de la sección.

Tres maneras de modularizar con Facelets
Esta es la porción de código que se abstraerá para los ejemplos siguientes:
 <ui:composition> 
Bienvenido, #{usuario.nombre}
 </ui:composition>

•Templating mediante ‘includes’
Este es el método más familiar para modularizar componentes (se le pueden pasar parámetrosal ‘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> 

¿Cómo especificamos el tag?: en un archivo xml, que es una libreria de tags facelets. Estearchivo es cargado automáticamente por Facelets, para ello debe tener la extensión *.taglib.xml y estar ubicado en el directorio especial META-INF.

 <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 puedenser insertados en la página (inline).
El texto anterior se mostrará.
 <ui:decórate  template="/contenido/bienvenido.xhtml"
  <ui:param  name="usuario" value="#{usuarioActual}"  />  
</ui:decorate>

El texto posterior se mostrará.
Un uso práctico del decorator es cuando no tiene mucho sentido abstraer el componente en unarchivo aparte, pero sí usar las ventajas del templating.

A manera de conclusión
El uso de templating trae consigo las ventajas de tener un código ordenado (sobre todo enaplicaciones grandes), fácil de desarrollar y reusar. Uno puede crear componentes o templatesque abarcan desde simplemente mostrar texto hasta crear componentes que muestren uncheckbox, un input o un dropdown dependiendo de la data del backing bean.

Comentarios

Entradas populares de este blog

Rootear Motorola Defy

Liferay DXP -IP Geocoder

Pasos para Publicar un sitio Web