Вы можете интегрировать шаблоны 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>
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ