Ти можеш інтегрувати шаблони Tiles — як і будь-яку іншу технологію подання — до веб-додатків, що використовують Spring. У цьому розділі описано, як це зробити.

Цей розділ присвячений підтримці Spring для Tiles версії 3 у пакеті 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 використовується за замовчуванням.

Оскільки символи підкреслення використовуються для позначення регіональних налаштувань, не рекомендується використовувати їх в інших іменах файлів для визначення шаблонів Tiles.

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>