Thymeleaf – это популярный механизм шаблонов на основе Java, используемый для рендеринга на стороне сервера в веб-приложениях. Он предоставляет мощные функции для управления данными и рендеринга динамического контента. В этом сообщении блога мы рассмотрим пять различных способов использования циклов for в текстовых шаблонах Thymeleaf, а также приведем примеры кода для каждого метода.
- Базовый цикл For:
Базовый цикл for в Thymeleaf позволяет перебирать коллекцию и отображать содержимое шаблона для каждого элемента в коллекции. Вот пример:
<ul>
<li th:each="item : ${items}" th:text="${item}"></li>
</ul>
В этом примере атрибут th:each
перебирает коллекцию items
и для каждого элемента отображает элемент <li>
с идентификатором элемента. значение.
- Цикл с индексом.
Thymeleaf также предоставляет возможность доступа к индексу текущей итерации внутри цикла. Вот пример:
<ul>
<li th:each="item, i : ${items}" th:text="${i + 1 + '. ' + item}"></li>
</ul>
В этом примере атрибут th:each
включает дополнительную переменную i
, которая представляет индекс текущей итерации. Мы можем использовать i
для отображения индекса вместе со значением элемента.
- Цикл с условной визуализацией.
Thymeleaf позволяет условно отображать элементы внутри цикла с помощью атрибутаth:if
. Вот пример:
<ul>
<li th:each="item : ${items}" th:if="${item != null}" th:text="${item}"></li>
</ul>
В этом примере атрибут th:if
проверяет, не является ли текущий элемент нулевым, прежде чем отображать элемент <li>
.
- Цикл со статусом итерации.
Thymeleaf предоставляет объектiterationStatus
, который предоставляет вам доступ к различным свойствам текущей итерации, таким как индекс, размер и т. д. Вот пример:
<ul>
<li th:each="item, status : ${items}" th:text="${status.index + 1 + '. ' + item}"></li>
</ul>
В этом примере атрибут th:each
включает дополнительную переменную status
, которая представляет статус итерации. Мы можем использовать status.index
для отображения индекса вместе со значением элемента.
- Цикл с нумерацией страниц:
Thymeleaf поддерживает нумерацию страниц, используя атрибутth:fragment
для определения повторно используемого фрагмента шаблона, а затем используя атрибутth:replace
для включения фрагмента в петля. Вот пример:
<ul>
<li th:each="item : ${items}">
<div th:replace="fragments/pagination :: item"></div>
</li>
</ul>
В этом примере атрибут th:replace
включает выражение fragments/pagination :: item
, которое заменяет элемент <div>
содержимым pagination
фрагмент для каждого элемента цикла.
Поддержка циклов for в Thymeleaf обеспечивает гибкий и мощный способ перебора коллекций и рендеринга динамического контента в текстовых шаблонах. Используя эти пять различных методов, вы можете повысить универсальность своих шаблонов Thymeleaf и создавать более динамичные и интерактивные веб-приложения.