Facelets

Los Facelets han sido creados para reemplazar a las jsp’s como mecanismo para declarar vistas. Lo que se ha querido conseguir es proporcionar un modelo-vista-controlador “limpio” al no incluir código Java en el lenguaje de marca o etiqueta.

Si bien, es posible utilizar en una misma aplicación jsp y facelets, es recomendable migrar las páginas jsp y utilizar únicamente Facelets ya que las páginas Jsp no soportan todas las nuevas características JavaServer Faces de la plataforma Java EE 6. En aplicaciones Jsf hacer uso de páginas Jsp se considera deprecado.

¿Qué son los facelets?

Es un lenguaje ligero de declaración de páginas para la construcción de vistas JavaServer Faces usando plantillas de estilo HTML y la creación de árboles de componentes. Con las siguientes características:

  • Usa XHTML para la creación de páginas web
  • Soporta la librería de etiquetas de facelets, además de Jsf y JSTL
  • Soporta expresiones EL
  • Plantillas para páginas y componentes
  • Reutilización de código, por el uso de plantillas y la composición de componentes
  • Muy rápido de compilar y renderizar, con validaciones en tiempo de compilación

Uso de plantillas

Hay dos elementos, los clientes de las plantillas, y los ficheros plantilla. Los clientes de las plantillas son los ficheros que se corresponden con el “viewId”, como por ejemplo “inicio.xhtml”. El cliente empleará uno o más ficheros plantilla que se aplicarán sobre él, de modo que se aplicará un “look and feel” determinado definido en estos ficheros. Vamos a verlo con un ejemplo. Crearemos un fichero llamado “plantilla.xhtml” con el siguiente contenido: 

Lo primero que hemos hecho ha sido definir el espacio de nombres para las etiquetas de plantillas de facelets “xmlns:ui=”http://java.sun.com/jsf/facelets”. Nos tenemos que fijar en las etiquetas “ui:insert”, que serán reemplazadas con “algo”, cuando se compile la página. Ahora vamos a modificar el contenido de la página “mensaje.xhtml” que vimos en la introducción a Jsf para que use esta plantilla:

En el cliente de la plantilla se usa “ui:composition”, cualquier cosa fuera de las etiquetas “ui:define” será ignorada. El resultado sería el siguiente:

Ejemplo de uso de plantilla

Ejemplo de uso de plantilla

Vamos a analizar a continuación las etiquetas “ui”:

ui:composition

Agrupa un conjunto de componentes que pueden ser utilizados en otra página. Todo lo que quede fuera de esta etiqueta será ignorado. Puede envolver a una plantilla o hacer referencia a otra plantilla.

ui:decorate

Es similar al anterior, hace referencia a una plantilla que, en este caso, es obligatoria. Los componentes que queden fuera de esta etiqueta sí serán renderizados a diferencia de lo que ocurre con el caso anterior.

ui:define

Se usan dentro de “ui:composition” y asigna un nombre a las secciones de código (conjuntos de componentes), que serán insertadas en la plantilla mediante el uso de etiquetas “ui:insert” que hagan referencia al mismo nombre.

ui:insert

Se usan dentro de una plantilla para incluir los componentes que se definieron con “ui:define”. Si no se indica in nombre, insertará los elementos contenidos en la etiqueta.

ui:include

Se combina con el uso de la etiqueta “ui:param” para habilitar la inclusión de páginas parametrizadas en otras páginas o plantillas. Por ejemplo, podemos pasar el usuario a una plantilla de este modo:

Donde la plantilla “plantillaDos.xhtml”, podría ser:

ui:param

Se usa dentro de “ui:include” y declara pares clave-valor que pueden usarse con expresiones EL (#{}).

Aquí termina este artículo, en el siguiente hablaremos sobre los beans manejados. Si te ha gustado, puedes dejar un comentario.

2 comentarios:

  1. Muy bueno, aclara muchos conceptos d forma breve, y los ejemplos están excelentes para iniciar en el mundo de JSF.

  2. Muy bueno pero faltó ui:fragment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *