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