Оглавление
Стандартные HTML/XML комментарии <!--… --> можно использовать в любом месте шаблонов Thymeleaf. Все, что внутри этих комментариев, не будет обрабатываться Thymeleaf и будет скопировано дословно:
Parser-level комментарии — это участки кода, которые просто удаляются из шаблона при парсинге. Посмотрим на них:
Thymeleaf удалит все между <!--/* and */-->, поэтому эти блоки комментариев также могут использоваться для отображения кода, когда шаблон статически открыт, зная, что он будет удален, когда Thymeleaf обработает его:
Это может пригодиться для прототипирования таблиц с большим количеством <tr>, например:
Thymeleaf позволяет определить специальные блоки комментариев, которые удобны при отображении прототипа дизайна, но при этом они считаются нормальной разметкой при обработке шаблона со стороны Thymeleaf.
Thymeleaf’s парсер просто удалит <!--/*/ и /*/--> маркеры, но не их содержимое, которое будет оставлено без комментария. При обработке шаблона на выходе увидим:
Как и в блоках комментариев на уровне парсера, эта функция не зависит от диалекта.
Thymeleaf’s элементный процессор (а не атрибутный) и включенный в Standard Dialects — это th:block.
th:block — это простой контейнер атрибутов, который позволяет разработчикам шаблонов указывать какие атрибуты они хотят. Thymeleaf выполнит эти атрибуты, а затем просто удалит блок, но не его содержимое.
Таким образом, это может быть полезно, например, при создании повторяющихся таблиц, для которых требуется более одного <tr> для каждого элемента:
И особенно полезно при использовании в сочетании с блоками комментариев только для прототипа:
Обратите внимание, как это решение позволяет шаблонам быть валидным HTML (не нужно добавлять запрещенные блоки <div> внутри <table>), и это продолжает работает нормально при открытии в браузерах в качестве прототипов!
11 Комментарии и Блоки / Blocks
11.1. Стандартные HTML/XML комментарии
Стандартные HTML/XML комментарии <!--… --> можно использовать в любом месте шаблонов Thymeleaf. Все, что внутри этих комментариев, не будет обрабатываться Thymeleaf и будет скопировано дословно:
<!-- User info follows --> <div th:text="${...}"> ... </div>
11.2. Thymeleaf блоки комментариев на уровне парсера
Parser-level комментарии — это участки кода, которые просто удаляются из шаблона при парсинге. Посмотрим на них:
<!--/* This code will be removed at Thymeleaf parsing time! */-->
Thymeleaf удалит все между <!--/* and */-->, поэтому эти блоки комментариев также могут использоваться для отображения кода, когда шаблон статически открыт, зная, что он будет удален, когда Thymeleaf обработает его:
<!--/*--> <div> you can see me only before Thymeleaf processes me! </div> <!--*/-->
Это может пригодиться для прототипирования таблиц с большим количеством <tr>, например:
<table> <tr th:each="x : ${xs}"> ... </tr> <!--/*--> <tr> ... </tr> <tr> ... </tr> <!--*/--> </table>
11.3. Комментарии Thymeleaf уровня прототипирования
Thymeleaf позволяет определить специальные блоки комментариев, которые удобны при отображении прототипа дизайна, но при этом они считаются нормальной разметкой при обработке шаблона со стороны Thymeleaf.
<span>hello!</span> <!--/*/ <div th:text="${...}"> ... </div> /*/--> <span>goodbye!</span>
Thymeleaf’s парсер просто удалит <!--/*/ и /*/--> маркеры, но не их содержимое, которое будет оставлено без комментария. При обработке шаблона на выходе увидим:
<span>hello!</span> <div th:text="${...}"> ... </div> <span>goodbye!</span>
Как и в блоках комментариев на уровне парсера, эта функция не зависит от диалекта.
11.4. Синтетический th:block тег
Thymeleaf’s элементный процессор (а не атрибутный) и включенный в Standard Dialects — это th:block.
th:block — это простой контейнер атрибутов, который позволяет разработчикам шаблонов указывать какие атрибуты они хотят. Thymeleaf выполнит эти атрибуты, а затем просто удалит блок, но не его содержимое.
Таким образом, это может быть полезно, например, при создании повторяющихся таблиц, для которых требуется более одного <tr> для каждого элемента:
<table> <th:block th:each="user : ${users}"> <tr> <td th:text="${user.login}">...</td> <td th:text="${user.name}">...</td> </tr> <tr> <td colspan="2" th:text="${user.address}">...</td> </tr> </th:block> </table>
И особенно полезно при использовании в сочетании с блоками комментариев только для прототипа:
<table> <!--/*/ <th:block th:each="user : ${users}"> /*/--> <tr> <td th:text="${user.login}">...</td> <td th:text="${user.name}">...</td> </tr> <tr> <td colspan="2" th:text="${user.address}">...</td> </tr> <!--/*/ </th:block> /*/--> </table>
Обратите внимание, как это решение позволяет шаблонам быть валидным HTML (не нужно добавлять запрещенные блоки <div> внутри <table>), и это продолжает работает нормально при открытии в браузерах в качестве прототипов!
