Подробное описание:
Вы знаете, что Thymeleaf — это механизм шаблонов, в котором используются несколько концепций:
- Шаблон.
Шаблон – это понятие, означающее, что вы можете писать свои HTML-файлы в более широком смысле (возможно, включая другие шаблоны). Эти файлы шаблонов, наконец, будут обработаны механизмом шаблонов Thymeleaf на стороне сервера и создадут обычный html-файл, который будет отправлен клиенту.
- Макет (общая концепция):
Макет — это расположение текста, изображений и других объектов на странице, и это больше всего интересует дизайнеров веб-сайтов. По концепции макета вы можете указать общую структуру/форматирование ваших страниц. Файлы макета могут быть без содержимого (только структура) или с некоторым содержимым, которое используется его вызывающими объектами.
- Шаблон макета (= макет страницы):
Шаблон макета — это файл макета с несколькими фрагментами и пустыми тегами, поэтому вызывающие макеты (шаблоны страниц) вызывают его и используют его структуру (в то время как сами также иметь содержание).
- Шаблон страницы
Шаблон страницы относится к html-файлу страницы, поэтому он может вызывать другие шаблоны и фрагменты и использовать структуру шаблона макета. Наконец, шаблон страницы будет преобразован в обычную html-страницу механизмом шаблонов Thymeleaf.
- Фрагмент.
Фрагмент является частью шаблона. Thymeleaf позволяет импортировать фрагменты шаблона в другой шаблон.
Обычно разработчики создают несколько шаблонов макета (для разных форматов страниц), которые используются в других шаблонах страниц. Шаблоны макета/страницы часто содержат некоторые фрагменты, такие как верхний колонтитул, навигация, нижний колонтитул и основной раздел, в котором будет размещаться основное содержимое.
Теперь, что такое диалект? Как вы знаете, Thymeleaf — это инструмент, позволяющий настраивать его, и для этой цели диалект позволяет вам определить, как будет обрабатываться ваш шаблон. На самом деле Layout dialect
выполняет оформление в соответствии с шаблоном декоратора.
Разные диалекты:
- Базовая библиотека Thymeleaf предоставляет диалект под названием Стандартный
диалект, который подходит для всех и использует язык OGNL
для обработки шаблона.
- Spring Framework создает частный диалект под названием SpringStandard Dialect. он похож на стандартный диалект Thymeleaf, но имеет небольшие изменения для лучшего использования некоторых функций Spring Framework. Например: он использует Spring Expression Language (SpringEL) вместо OGNL. Поэтому, если вы используете Spring Framework, вы должны использовать этот диалект.
- thymeleaf-layout-dialect : с открытым исходным кодом project и имеет больше функций, позволяющих создавать макеты и повторно используемые шаблоны для улучшения повторного использования кода. Эта библиотека использует префикс
layout:
для своих атрибутов.
- Пользовательский диалект: вы можете расширить Thymeleaf и создать свой собственный диалект.
Пример: Проект загрузки тимелеафа в spring с диалектом тимелеафа-раскладки (диалект номер 3):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>nz.net.ultraq.thymeleaf</groupId>
<artifactId>thymeleaf-layout-dialect</artifactId>
</dependency>
</dependency>
Примечание. Причина декоратора ИЛИ декорирования в диалекте номер (3):
Диалект макета Thymeleaf версия 1.x использует decorator
, который был напротив decorator pattern
.
Таким образом, в версии 2.x эта ошибка была устранена путем введения decorate
.
Поэтому, несмотря на то, что Thymeleaf и его библиотеки диалектов компоновки обратно совместимы , но лучше использовать layout:decorate
в своих кодах.
В то время как диалект макета выполняет оформление в соответствии с шаблоном декоратора, в версии 1.x он неправильно идентифицировал макет/родительский шаблон как декоратор, когда вместо этого, согласно шаблону проектирования, расширение (шаблон контента в данном случае) является декоратором. . Это изменение представляет собой простое переименование обработчика layout:decorator/data-layout-decorator в layout:decorate/data-layout-decorate так, чтобы определяемый шаблон был декорируемым, а не декоратором, плюс капитальный ремонт документации. исправить это несоответствие.
ссылка: https://ultraq.github.io/thymeleaf-layout-dialect/MigrationGuide.html
Итак, вы должны использовать layout:decorate
в своих шаблонах страниц и сослаться на основной шаблон.
В layout:decorate в теге указано, какой шаблон макета использовать для украшения с помощью этот шаблон контента
Пример: https://ultraq.github.io/thymeleaf-layout-dialect/Examples.html#layouts
person
Ghasem Sadeghi
schedule
28.02.2020