Apache Tiles

De Dos Ideas.
Saltar a: navegación, buscar

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.

Configuración rápida de Apache Tiles 3.0

Configurar Apache Tiles 3.0 para un sitio web consiste de estos pasos básicos:

  1. Agregar las librerias de Tiles al proyecto.
  2. Crear el archivo de configuración tiles.xml' con las definiciones de las páginas.
  3. Configurar el listener de Tiles en el archivo web.xml para que levante la configuración del punto 2.
  4. 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:

  1. Actualizar los JAR
  2. Actualizar la configuración del web.xml
  3. Actualizar los tags en los templates
  4. 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">

Ver también