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
[ocultar]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>
<tiles:insertAttribute name="menu"/>
<tiles:insertAttribute name="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">