1. Обзор
В этом уроке мы рассмотрим различные типы условных обозначений, доступных в Thymeleaf .
Для быстрого ознакомления с Thymeleaf, пожалуйста, обратитесь к этой статье .
2. Зависимости Maven
Давайте начнем с зависимостей Maven, которые необходимы для использования Thymeleaf вместе с Spring:
org.thymeleaf thymeleaf 3.0.11.RELEASE org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE
Для других весенних выпусков следует использовать соответствующую библиотеку thymeleaf-springX , где X означает весеннюю версию. Пожалуйста , также обратите внимание, что Spring 5 поддерживается, начиная с 3.0.8.RELEASE , Thymeleaf.
Последние версии необходимых зависимостей можно найти здесь .
3. Условные обозначения Тимелеафа
Мы должны различать условные обозначения, которые позволяют нам отображать текст внутри HTML-элемента в зависимости от условия, и те, которые управляют созданием экземпляра самого HTML-элемента.
Давайте определим наш класс Teacher model, который мы будем использовать на протяжении всей этой статьи:
public class Teacher implements Serializable { private String gender; private boolean isActive; private Listcourses = new ArrayList<>(); private String additionalSkills;
3.1. Оператор Элвиса
Оператор Elvis ?: позволяет отображать текст в элементе HTML в зависимости от текущего состояния переменной.
Мы можем использовать выражения по умолчанию для предоставления текста по умолчанию, если переменная имеет значение null :
В верхнем примере мы хотим отобразить содержимое переменной teacher.additional Skills , если она определена, и мы хотим, чтобы текст ” UNKNOWN ” отображался иначе.
Также можно отображать произвольный текст в зависимости от логического выражения:
Мы можем запросить простую булеву переменную, как в предыдущем примере, но сравнение строк и проверка диапазона также возможны.
Поддерживаются следующие компараторы и их текстовые представления > (gt), >= (ge), < (lt), <= (le), == (eq) и != (ne) .
3.2. Если – Если
Атрибуты th:if и th:if позволяют нам отображать HTML-элемент в зависимости от заданного условия:
Female Male
Если содержимое переменной teacher.gender равно F, , то отображается элемент span со значением ” Female “.
В противном случае отображается элемент с ” Male “. Такая настройка сопоставима с предложением if-else , присутствующим в большинстве языков программирования.
3.3. Распределительный ящик
Если существует более двух возможных результатов выражения, мы можем использовать атрибуты th:switch и th:case для условного отображения элементов HTML:
NO COURSES YET!
В зависимости от размера списка teacher.courses мы либо показываем текст по умолчанию, либо один курс, либо все доступные курсы. Звездочка (*) используется для параметра по умолчанию.
4. Заключение
В этой короткой статье мы исследовали различные типы условных обозначений Thymeleaf и представили несколько упрощенных примеров, показывающих различные варианты.
Примеры можно найти в проекте GitHub .