1. Введение
В этом кратком руководстве мы рассмотрим, как работать с логическими значениями в Thymeleaf.
Прежде чем мы углубимся в детали, основы Thymeleaf можно найти в этой статье .
2. Вычисление выражений как логических значений
В Thymeleaf любое значение может быть оценено как логическое. У нас есть несколько значений, интерпретируемых как false
:
нулевой
- логическое значение
false
- число
0
- символ \
0
- строки
«false»
,«off»
и«no»
Любое другое значение оценивается как true
.
3. Использование логических значений в качестве условий рендеринга
Для условной визуализации HTML-элемента у нас есть два варианта: атрибуты th:if
и th:unless
.
Их эффект прямо противоположен — Thymeleaf будет отображать элемент с атрибутом th:if,
только если значение атрибута истинно
, и с атрибутом th
:unless, только если его значение равно false:
<span th:if="${true}">will be rendered</span>
<span th:unless="${true}">won't be rendered</span>
<span th:if="${false}">won't be rendered</span>
<span th:unless="${false}">will be rendered</span>
4. Логические и условные операторы
Кроме того, мы можем использовать три классических логических оператора в Thymeleaf:
а также
или же
- отрицание с помощью ключевого слова
not
или «!» символ
Мы можем использовать эти операторы внутри переменных выражений или комбинировать с ними несколько переменных выражений:
<span th:if="${isRaining or isCold}">The weather is bad</span>
<span th:if="${isRaining} or ${isCold}">The weather is bad</span>
<span th:if="${isSunny and isWarm}">The weather is good</span>
<span th:if="${isSunny} and ${isWarm}">The weather is good</span>
<span th:if="${not isCold}">It's warm</span>
<span th:if="${!isCold}">It's warm</span>
<span th:if="not ${isCold}">It's warm</span>
<span th:if="!${isCold}">It's warm</span>
Мы также можем использовать условные операторы: if-then
, if-then-else
и операторы по умолчанию.
Оператор if-then-else
— это обычный тройной оператор или ?
: оператор:
It's <span th:text="${isCold} ? 'cold' : 'warm'"></span>
Более того, оператор if-then
— это упрощенная версия, в которой у нас нет части else:
<span th:text="${isRaining or isCold} ? 'The weather is bad'"></span>
Оператор по умолчанию возвращает первый операнд, если он не равен нулю
, и второй в противном случае:
<span th:text="'foo' ?: 'bar'"></span> <!-- foo -->
<span th:text="null ?: 'bar'"></span> <!-- bar -->
<span th:text="0 ?: 'bar'"></span> <!-- 0 -->
<span th:text="1 ?: 'bar'"></span> <!-- 1 -->
Оператор по умолчанию также называется оператором Элвиса из-за его сильного сходства с прической Элвиса.
Обратите внимание, что оператор Элвиса выполняет только нулевую
проверку, он не оценивает первый операнд как логический.
5. #bools
Вспомогательный объект
#bools — это
служебный объект, который доступен в выражениях по умолчанию и имеет несколько удобных методов:
#bools.isTrue(obj)
возвращает значениеистинности аргумента.
#bools.isFalse(obj)
возвращает, оценивается ли аргумент какложный
#bools.xxxIsTrue(коллекция)
преобразует элементы аргумента в логические значения с помощью#bools.isTrue(),
а затем собирает их в коллекцию того же типа.#bools.xxxIsFalse(коллекция)
преобразует элементы аргумента в логические значения с помощью#bools.isFalse(),
а затем собирает их в коллекцию того же типа.#bools.xxxAnd(коллекция)
возвращает значениеtrue
, если все элементы в аргументе оцениваются какtrue
#bools.xxxOr(коллекция)
возвращает значениеtrue
, если любой элемент в аргументе оценивается какtrue
В приведенных выше методах xxx
может быть массивом
, списком
или набором
, в зависимости от аргумента метода (и возвращаемого значения в случае xxxIsTrue()
и xxxIsFalse()
).
6. Заключение
В этой статье мы увидели, как Thymeleaf интерпретирует значения как логические значения, а также как мы можем отображать элементы условно и работать с логическими выражениями.
Как обычно, код (с большим количеством примеров) доступен на Github .