Ви можете інтегрувати шаблони 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>