Cómo crear una plantilla con JSF y Facelets | el holgazán

domingo 21 de octubre de 2007

Cómo crear una plantilla con JSF y Facelets

Ver también: Cómo crear un componente JSF con Facelets.
Estos son los pasos a seguir:

1. Crear la plantilla
Una plantilla no es más que un documento xhtml con ciertos "huecos", que se definen con <ui:insert name="...">. Cada uno de ellos tiene un nombre.
Por ejemplo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title><ui:insert name="title">Default title</ui:insert></title>
<link rel="stylesheet" type="text/css" href="./css/main.css"/>
</head>
...
A estos huecos se les puede definir con contenido por defecto, para los casos en que las páginas que usen la plantilla no los cumplimenten.

2. Usar la plantilla en las páginas a desarrollar
Basta con que la página indique la plantilla a usar, con <ui:composition template="...">, y cumplimente los huecos que correspondan, con <ui:define name="...">.
Ejemplo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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">
<ui:composition template="/WEB-INF/layout/layout.xhtml">
<ui:define name="title">CD form</ui:define>
<ui:define name="content">
<!-- use the form tag to set up this form -->
<h:form id="cdForm">
...
</h:form>
</ui:define>
</ui:composition>
</html>