Работа с Boolean в Thymeleaf

Работа с логическим значением в 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.