Apache Tiles
Apache Tiles es un framework de template para simplificar el desarrollo de interfaces de usuario. Tiles permite definir fragmentos y crear páginas que se ensamblan en tiempo de ejecución con estos fragmentos.
Contenido
Configuración rápida de Apache Tiles 3.0
Configurar Apache Tiles 3.0 para un sitio web consiste de estos pasos básicos:
- Agregar las librerias de Tiles al proyecto.
- Crear el archivo de configuración tiles.xml' con las definiciones de las páginas.
- Configurar el listener de Tiles en el archivo web.xml para que levante la configuración del punto 2.
- Configurar un Servlet que atienda peticiones y cree las páginas a partir de las definiciones del punto 2.
1. Configurar las librerias de Tiles
Usando Maven, incluir 3 dependencias:
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-servlet</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.0</version> </dependency>
2. Configurar tiles.xml
Crear un archivo WEB-INF/tiles.xml en la aplicación web. El siguiente archivo tiene una definición de ejemplo agregada.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
<definition name="prueba/holamundo" template="/WEB-INF/layouts/default.jsp"> <put-attribute name="titulo" value="Un hola mundo con Tiles" /> <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" /> <put-attribute name="body" value="/WEB-INF/jsp/holamundo.jsp" /> </definition>
</tiles-definitions>
La definición del template
El ejemplo anterior hace referencia a un template, que contiene la estructura de la página. El template tiene lugares (placeholders) donde se ubican los fragmentos. Un template de ejemplo podría ser:
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head> <title><tiles:getAsString name="title"/></title> </head> <body>
</body>
</html>
3. Configurar el listener de Tiles
En el archivo web.xml configurar el listener de Tiles 3:
<listener> <listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class> </listener>
4. Configurar un servlet que atienda peticiones
Tiles brinda integración con varios frameworks de presentación (como Struts, Spring, Shale, Velocity y otros). También provee de un Servlet muy sencillo que atiende las peticiones y renderiza directo la definición asociada.
La configuración de este Servlet se hace en el archivo web.xml:
<servlet> <servlet-name>Tiles Dispatcher Servlet</servlet-name> <servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>Tiles Dispatcher Servlet</servlet-name> <url-pattern>*.tiles</url-pattern> </servlet-mapping>
Con esta configuración puede desplegarse la aplicación. La petición "prueba/holamundo.tiles" será atendida por este servlet, y aplicada la definición en tiles.xml.
Migrar de Tiles 2.2 a Tiles 3.0
La migración de Tiles 2.2 a Tiles 3.0 es sencilla e involucra los siguienets pasos:
- Actualizar los JAR
- Actualizar la configuración del web.xml
- Actualizar los tags en los templates
- Actualizar el DTD de tiles.xml (opcional)
1. Actualizar los JAR
Tiles 3.0 necesita de 3 JAR para funcionar. Usando Maven:
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-servlet</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.0</version> </dependency>
2. Actualizar la configuración del web.xml
Tiles 2.2 usaba un listener simple para levantar la configuración de Tiles, llamado org.apache.tiles.web.startup.simple.SimpleTilesListener. Esta clase sigue existendo en Tiles 3, pero no parece funcionar correctamente (confirmado como bug). La solución es reemplazar el listener por el nuevo de Tiles 3:
<listener> <listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class> </listener>
3. Actualizar los tags en los templates
Los templates usan los taglib de Tiles para insertar definiciones. En particular, en Tiles 3 dejó de existir el tag tiles:useAttribute el cual es reemplazado por el tag tiles:importAttribute.
4. Actualizar el DTD de tiles.xml (opcional)
Por último, el archivo tiles.xml tiene un nuevo DTD, el cual se puede actualizar. Este paso es opcional, ya que Tiles 3 funciona con la configuración de Tiles 2.
El nuevo encabezado para los archivos de definición de tiles (tiles.xml y demás) es:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">