Вы можете интегрировать шаблоны Tiles – как и любую другую технологию представления – в веб-приложения, использующие Spring. В данном разделе в общих чертах описано, как это сделать.
org.springframework.web.servlet.view.tiles3.
Зависимости
Чтобы иметь возможность использовать шаблоны Tiles, вы должны добавить зависимость от Tiles версии 3.0.1 или выше и его транзитивные зависимости в ваш проект.
Конфигурация
Чтобы иметь возможность использовать Tiles, вы должны сконфигурировать его с помощью файлов, содержащих определения (основную информацию об определениях и других понятиях Tiles см. на сайте https://tiles.apache.org). В Spring это делается с помощью TilesConfigurer. В следующем примере конфигурации ApplicationContext показано, как это сделать:
<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>
В предыдущем примере определены пять файлов, содержащих определения. Все файлы расположены в каталоге WEB-INF/defs. При инициализации WebApplicationContext загружаются файлы и инициализируется фабрика определений. После этого шаблоны Tiles, включенные в файлы определений, можно использовать в качестве представлений в вашем веб-приложении Spring. Чтобы иметь возможность использовать представления, необходимо обеспечить наличие ViewResolver, как и для любой другой технологии представления в Spring: обычно это удобный TilesViewResolver.
Можно задать определения шаблонов Tiles под конкретные региональные настройки, добавив знак подчеркивания, а затем сами региональные настройки, как показано в следующем примере:
<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>
При предыдущей конфигурации tiles_fr_FR.xml используется для запросов с региональными настройками fr_FR, а tiles.xml используется по умолчанию.
UrlBasedViewResolver
UrlBasedViewResolver создает экземпляр данного viewClass для каждого представления, которое он должен распознать. Следующий бин определяет UrlBasedViewResolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
SimpleSpringPreparerFactory и SpringBeanPreparerFactory
В качестве дополнительной функции Spring также поддерживает две специальные реализации PreparerFactory для шаблонов Tiles. Подробнее о том, как использовать ссылки на ViewPreparer в файлах определения шаблонов Tiles, см. в документации по Tiles.
Вы можете задать SimpleSpringPreparerFactory для автоматического обнаружения и связывания экземпляров ViewPreparer на основе заданных подготавливающих классов, применяя обратные вызовы контейнера Spring, а также применяя сконфигурированные BeanPostProcessors в Spring. Если была активирована контекстная конфигурация аннотаций Spring, аннотации в классах ViewPreparer автоматически обнаруживаются и применяются. Обратите внимание, что для этого требуется наличие подготавливающих классов в файлах определения шаблонов Tiles, как это происходит в случае с PreparerFactory по умолчанию.
Вы можете задать SpringBeanPreparerFactory для работы с заданными подготавливающими именами (вместо классов), получая соответствующий бин Spring из контекста приложения DispatcherServlet. В этом случае весь процесс создания бинов находится под контролем контекста приложения Spring, что позволяет использовать явную конфигурацию внедрения зависимостей, бины, входящие в область доступности, и так далее. Обратите внимание, что необходимо определять одно определение бина Spring для каждого подготавливающего имени (как это делает в ваших определениях шаблонов Tiles). В следующем примере показано, как определить свойство SpringBeanPreparerFactory для бина 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>
<!-- разрешение подготавливающих имен как имен определений бинов Spring -->
<property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
</bean>
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ