1 Знакомство с Thymeleaf
1.1 Что такое Thymeleaf?
Thymeleaf — современный серверный механизм Java-шаблонов для веб- и автономных сред, способный обрабатывать HTML, XML, JavaScript, CSS и даже простой текст.
Основной целью Thymeleaf является создание элегантного и удобного способа шаблонизации. Чтобы достичь этого, Thymeleaf основывается на концепции Natural Templates, чтобы внедрить свою логику в файлы шаблонов таким образом, чтобы этот шаблон не влиял на отображение прототипа дизайна. Это улучшает коммуникацию в команде и уменьшает разрыв между дизайнерско-программистскими группами.
Thymeleaf также был разработан с самого начала с учетом стандартов Web, особенно HTML5, что позволяет вам создавать полностью соответствующие стандарту шаблоны.
1.2 Какие типы шаблонов может обрабатывать Thymeleaf?
Из коробки, Thymeleaf позволяет работать с шестью типами шаблонов, каждый из которых называется «Формат шаблона/Template Mode»:
- HTML
- XML
- TEXT
- JAVASCRIPT
- CSS
- RAW
Итого: два markup фармата (HTML and XML), три текстовых формата (TEXT, JAVASCRIPT и CSS) и простой формат (RAW).
HTML формат подразумевает HTML стандарт, включая HTML5, HTML 4 и XHTML. Валидация не выполняется, и код/структура оригинального шаблона будут соблюдаться в максимально возможной степени.
Формат шаблона XML позволит создать XML шаблон. В этом случае ожидается, что код будет хорошо сформирован, иначе без закрытых тегов, без кавычек атрибутов и прочего парсер сгенерирует исключения. Обратите внимание, что не будет проведена проверка DTD или XML-схемы.
Режим шаблона TEXT позволяет использовать специальный синтаксис для шаблонов без разметки. Примерами таких шаблонов могут быть текстовые письма или шаблонные документы. Обратите внимание, что HTML или XML-шаблоны также могут обрабатываться как TEXT, и в этом случае разметка не анализируется, и каждый тег, DOCTYPE, комментарий и прочее будет рассматриваться как простой текст.
Режим шаблона JAVASCRIPT позволит обрабатывать файлы JavaScript в приложении Thymeleaf. Это означает возможность использовать данные моделей внутри файлов JavaScript так же, как это можно сделать в HTML-файлах, но с интеграциями, специфичными для JavaScript, такими как специализированное экранирование или скриптинг. Режим шаблона JAVASCRIPT считается текстовым режимом и поэтому использует тот же специальный синтаксис, что и режим шаблона TEXT.
Режим шаблона CSS позволяет обрабатывать файлы CSS, участвующие в приложении Thymeleaf. Подобно режиму JAVASCRIPT, режим шаблона CSS также является текстовым режимом и использует специальный синтаксис обработки из режима шаблона TEXT.
Режим шаблона RAW просто не будет обрабатывать шаблоны. Он предназначен для вставки нетронутых ресурсов (файлов, ответов на URL и тп.) в обрабатываемые шаблоны. Например, внешние, неконтролируемые ресурсы в формате HTML могут быть включены в шаблоны приложений, надежно зная, что любой код Thymeleaf, который эти ресурсы включает, не будет выполнен.
1.3 Диалекты: Стандартный диалект
Thymeleaf — чрезвычайно расширяемый механизм (на самом деле его можно назвать платформой шаблонов), который позволяет вам определять и настраивать способ обработки ваших шаблонов до тонкого уровня детализации.
Объект, который применяет некоторую логику к артефакту разметки (тегу, текст, комментарию) называется процессором, а набор этих процессоров — плюс, возможно, некоторые дополнительные артефакты — это то, из чего состоит диалект. Из коробки основная библиотека Thymeleaf предоставляет диалект, называемый стандартным диалектом, которого должно быть достаточно для большинства пользователей.
Этот учебник охватывает стандартный диалект. Каждый атрибут и синтаксис, о которых вы узнаете на следующих страницах, определяется этим диалектом, даже если это явно не упоминается.
Разумеется, пользователи могут создавать свои собственные диалекты (даже расширяя стандартный), если они хотят определить свою собственную логику обработки, используя преимущества расширенных функций библиотеки. Thymeleaf также может быть настроен на одновременное использование нескольких диалектов.
Официальные пакеты интеграции «thymeleaf-spring3» и «thymeleaf-spring4» определяют диалект, называемый "SpringStandard Dialect", который в основном совпадает с стандартным диалектом, но с небольшими адаптациями, чтобы лучше использовать некоторые функции Spring Framework (например, Spring Expression Language (SPEL) или SpringEL вместо OGNL). Поэтому, если вы являетесь пользователем Spring MVC, вы не тратите свое время впустую, так как почти все, что вы узнаете здесь, будет полезно в ваших приложениях Spring.
Большинство процессоров стандартного диалекта являются процессорами атрибутов. Это позволяет браузерам правильно отображать шаблоны HTML даже без обработки, поскольку они просто игнорируют дополнительные атрибуты. Например, в то время как JSP с использованием библиотек тегов может включать фрагмент кода, который не может отображаться непосредственно браузером, например:
<form:inputText name="userName" value="${user.name}" />
… Thymeleaf Standard Dialect позволит нам достичь функциональности с:
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
Мало того, что это будет правильно отображаться браузерами, но это также позволяет нам (необязательно) указать в нем атрибут value («James Marrot»), который будет отображаться, когда прототип статически открыт в браузере и который будет заменен значением, полученным в результате выполнения ${user.name} во время обработки шаблона.
Это помогает вашему дизайнеру и разработчику работать с одним и тем же файлом шаблона и уменьшать усилия, необходимые для преобразования статического прототипа в рабочий файл шаблона. Возможность сделать это — функция Natural Templating.
Продолжение. Глава 2. Хорошая виртуальная бакалейная лавка Thymes
Автор: Константин