Puedes integrar plantillas de Tiles, como cualquier otra tecnología de presentación, en aplicaciones web que utilicen Spring. Esta sección describe cómo hacer esto.
org.springframework.web.servlet.view.tiles3
.Dependencias
Para poder utilizar plantillas de Tiles, debe agregar una dependencia en la versión 3.0.1 o superior de Tiles y sus dependencias transitivas con su proyecto.
Configuración
Para poder utilizar Tiles, debe configurarlo con archivos de definición (para obtener información básica sobre
definiciones y otros conceptos de Tiles, consulte
https://tiles.apache.org). En Spring esto se hace usando TilesConfigurer
. El siguiente ejemplo
de configuración de ApplicationContext
muestra cómo hacer esto:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/defs/general.xml</value>
<value>/WEB-INF/defs/widgets.xml</value>
<value>/WEB-INF/defs/administrator.xml</value>
<value>/WEB-INF/defs/customer.xml</value>
<value>/WEB-INF/defs/templates.xml</value>
</list>
</property>
</bean>
El ejemplo anterior definió cinco archivos que contienen definiciones. Todos los archivos se encuentran en el
directorio WEB-INF/defs
. Cuando se inicializa WebApplicationContext
, se cargan los
archivos y se inicializa la fábrica de definiciones. Las plantillas de Tiles incluidas en los archivos de definición
se pueden usar como vistas en su aplicación web Spring. Para poder utilizar vistas, debe proporcionar un ViewResolver
,
como cualquier otra tecnología de visualización en Spring: generalmente el conveniente
TilesViewResolver
.
Puedes definir definiciones de plantillas de Tiles para configuraciones regionales específicas agregando un guión bajo seguido de la configuración regional, como se muestra en el siguiente ejemplo:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/defs/tiles.xml</value>
<value>/WEB-INF/defs/tiles_fr_FR.xml</value>
</list>
</property>
</bean>
Con la configuración anterior, tiles_fr_FR.xml
se usa para consultas con configuraciones regionales
fr_FR
y tiles.xml
se usa de forma predeterminada.
UrlBasedViewResolver
El UrlBasedViewResolver
crea una instancia de la viewClass
dada para cada vista que
necesita reconocer. El siguiente bean define UrlBasedViewResolver
:
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
SimpleSpringPreparerFactory
y SpringBeanPreparerFactory
Como característica adicional, Spring también admite dos implementaciones especiales PreparerFactory
para plantillas de Tiles. Para obtener más información sobre cómo utilizar las referencias de
ViewPreparer
en archivos de definición de plantillas de Tiles, consulte la documentación de Tiles.
Puede definir un SimpleSpringPreparerFactory
para descubrir y vincular automáticamente instancias de
ViewPreparer
en función de clases de preparador especificadas, utilizando devoluciones de llamada de
contenedor Spring y también utilizando BeanPostProcessors configurados en Spring. Si se ha habilitado la
configuración del contexto de anotación de Spring, las anotaciones en las clases ViewPreparer
se
detectan y aplican automáticamente. Tenga en cuenta que esto requiere la presencia de clases de preparador en los
archivos de definición de plantilla de Tiles, como es el caso con PreparerFactory de forma predeterminada.
Puede especificar SpringBeanPreparerFactory
para operar con nombres de preparador determinados (en lugar
de clases), recuperando el Spring Bean correspondiente del contexto de la aplicación DispatcherServlet. En este
caso, todo el proceso de creación de beans está bajo el control del contexto de la aplicación Spring, lo que permite
la configuración explícita de inyección de dependencia, beans con ámbito, etc. Tenga en cuenta que debe definir una
definición de Spring Bean para cada nombre de preparador (como lo hacen las definiciones de su plantilla Tiles). El
siguiente ejemplo muestra cómo definir la propiedad SpringBeanPreparerFactory
para el bean TilesConfigurer
:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/defs/general.xml</value>
<value>/WEB-INF/defs/widgets.xml</value>
<value>/WEB-INF/defs/administrator.xml</value>
<value>/WEB-INF/defs/customer.xml</value>
<value>/WEB-INF/defs/templates.xml</value>
</list>
</property>
<!-- resolve preparer names as Spring bean definition names -->
<property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
</bean>