Перейти к основному содержимому

Работа с логическими значениями в Thymeleaf

· 3 мин. чтения

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 .