1. Обзор
Thymeleaf – это универсальный Java-шаблонный движок для обработки документов XML, XHTML и HTML5 .
В этом кратком руководстве мы рассмотрим, как мы можем выполнять итерации с помощью Thymeleaf, а также некоторые другие функции, предоставляемые библиотекой.
Для получения дополнительной информации о Thymeleaf ознакомьтесь с нашей вводной статьей здесь .
2. Зависимости Maven
Для создания этого примера мы будем использовать библиотеки Spring Framework вместе с библиотеками Thymeleaf.
Здесь мы можем увидеть наши зависимости ( thymeleaf и thymeleaf-spring ):
org.thymeleaf thymeleaf 3.0.11.RELEASE org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE
3. Пример настройки
Прежде чем перейти к слою представления, давайте создадим структуру MVC для нашего примера.
Начиная с фрагмента кода слоя модели:
public class Student implements Serializable { private Integer id; private String name; // standard contructors, getters, and setters }
Давайте также предоставим метод контроллера, отвечающий за загрузку модели и возврат ее на уровень представления:
@GetMapping("/listStudents") public String listStudent(Model model) { model.addAttribute("students", StudentUtils.buildStudents()); return "listStudents.html"; }
В нашем примере выше метод build Students() просто возвращает список объектов Student , которые мы затем добавляем в модель .
4. Й:каждый Атрибут
В Thymeleaf итерация достигается с помощью атрибута th:each .
Одна из интересных вещей в этом атрибуте заключается в том, что он будет принимать и перебирать некоторые различные типы данных , такие как:
- объекты, реализующие java.util.Итерируемый
- объекты, реализующие java.util.Map
- массивы
- любой другой объект рассматривается как однозначный список, содержащий один элемент
Теперь давайте вызовем атрибут th:each с данными, которые мы настроили в нашем примере выше:
Фрагмент кода показывает th:каждый перебирает наш список Студентов . Доступ к атрибуту модели осуществляется с помощью нотации $ {} , и каждый элемент списка передается в тело цикла через переменную student .
5. Переменная состояния
Thymeleaf также включает полезный механизм для отслеживания итерационного процесса с помощью переменной состояния .
Переменная status предоставляет следующие свойства:
- index : текущий индекс итерации, начинающийся с 0 (ноль)
- count : количество элементов, обработанных до сих пор
- size : общее количество элементов в списке
- even/odd : проверяет, является ли текущий индекс итерации четным или нечетным
- first : проверяет, является ли текущая итерация первой
- last : проверяет, является ли текущая итерация последней
Давайте посмотрим, как работает переменная состояния в нашем примере:
Здесь мы включили свойство iStat.odd для оценки условия и установки полужирного стиля для текущей строки. То же самое делается и при следующей оценке, но на этот раз мы используем iStat.even для печати значения через HTML-атрибут alt/title.
В случае, если мы опустим явное создание переменной состояния (представленной в нашем примере как iStat ), мы могли бы вызвать нашу переменную состояния, просто используя studentStat , которая является агрегацией переменной student с суффиксом Stat.
6. Заключение
В этой статье мы рассмотрели одну из многих функций, предоставляемых библиотекой Thymeleaf.
Мы представили итерацию в Thymeleaf с помощью атрибута th:each вместе с его готовыми свойствами.
Рабочая версия кода, показанная в этой статье, доступна в нашем репозитории GitHub .