Главная » Хабрахабр » Учебник Thymeleaf: Глава 11. Комментарии и Блоки / Blocks

Учебник Thymeleaf: Глава 11. Комментарии и Блоки / Blocks

Оглавление

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 удалит все между , поэтому эти блоки комментариев также могут использоваться для отображения кода, когда шаблон статически открыт, зная, что он будет удален, когда Thymeleaf обработает его:

<!--/*--> <div> you can see me only before Thymeleaf processes me! </div>
<!--*/-->

Это может пригодиться для прототипирования таблиц с большим количеством , например:

<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 (не нужно добавлять запрещенные блоки внутри ), и это продолжает работает нормально при открытии в браузерах в качестве прототипов!


x

Ещё Hi-Tech Интересное!

Фиаско. История одной самоделки IoT

Большинство статей пишется по принципу «Я/мы это сделал/и, глядите как круто!». Эта же публикация посвящается провальному проекту. Добро пожаловать под кат… Это продолжение моей публикации Разработка умных устройств на примере контроллера теплого пола на ESP8266 Планировка — евротрешка, коридор, кухня-гостиная ...

Хакер Алексей, который защищает маршрутизаторы MikroTik без разрешения владельцев, стал знаменитым

маршрутизаторов MikroTik по всему миру (в том числе 40 тыс. На Хабре подробно рассказывали про уязвимость CVE-2018-14847, которой подвержены около 370 тыс. Если вкратце, уязвимость в MikroTik RouterOS позволяет без особой авторизации прочитать удалённо любой файл с роутера, включая плохо ...