Работа с логическим значением в Thymeleaf
1. Вступление
В этом кратком руководстве мы рассмотрим, как работать с логическими значениями в Thymeleaf.
Прежде чем мы углубимся в детали, основы Thymeleaf можно найти вthis write-up.
2. Оценка выражений как логических
In Thymeleaf, any value can be evaluated to a boolean. У нас есть несколько значений, интерпретируемых какfalse:
-
null
-
логическое значениеfalse
-
число0
-
персонаж _0_
-
струны“false”,“off”and“no”
Любое другое значение оценивается какtrue.
3. Использование логических значений в качестве условий рендеринга
Для условного рендеринга HTML-элемента у нас есть два варианта:th:if и атрибутыth:unless .
Их эффект прямо противоположный - Thymeleaf будет отображать элемент с атрибутомth:if только в том случае, если значение атрибута равноtrue and с атрибутомth: except, только если его значение равноfalse:
will be rendered
won't be rendered
won't be rendered
will be rendered
4. Логические и условные операторы
Кроме того, мы можем использовать три классических логических оператора в Thymeleaf:
-
and
-
or
-
отрицание с ключевым словомnot или "!" символ
Мы можем использовать эти операторы внутри выражений переменных или комбинировать с ними несколько выражений переменных:
The weather is bad
The weather is bad
The weather is good
The weather is good
It's warm
It's warm
It's warm
It's warm
Мы также можем использовать условные операторы:if-then,if-then-else и операторы по умолчанию.
Соператорif-then-else является обычным тернарным оператором или?:
It's
Более того, соператорif-then - это упрощенная версия, в которой у нас нет части else:
Оператор по умолчанию возвращает первый операнд, если это неnull , и второй в противном случае:
Оператор по умолчанию также называется оператором Элвиса из-за его сильного сходства с прической Элвиса.
Обратите внимание, что оператор Элвиса выполняет только схемуnull , он не оценивает первый операнд как логическое.
5. #bools служебный объект
#bools - служебный объект, который по умолчанию доступен в выражениях и имеет несколько удобных методов:
-
#bools.isTrue(obj) возвращает, оценивается ли аргумент какtrue
-
#bools.isFalse(obj) возвращает, оценивается ли аргумент какfalse
-
#bools.xxxIsTrue(collection) преобразует элементы аргумента в логические значения с помощью#bools.isTrue() , затем собирает их в тот же тип коллекции
-
#bools.xxxIsFalse(collection) преобразует элементы аргумента в логические значения с помощью#bools.isFalse() , затем собирает их в тот же тип коллекции
-
#bools.xxxAnd(collection) возвращаетtrue, если все элементы в аргументе оцениваются какtrue
-
#bools.xxxOr(collection) возвращаетtrue , если любой элемент в аргументе оценивается какtrue
В приведенных выше методахxxx can может бытьarray,list orset, в зависимости от аргумента метода (и возвращаемого значения в случаеxxxIsTrue() andxxxIsFalse() ).
6. Заключение
В этой статье мы увидели, как Thymeleaf интерпретирует значения как логические, а также как мы можем отображать элементы условно и работать с логическими выражениями.
Как обычно, доступен код (с большим количеством примеров)over on Github.