Как иметь несколько условий в th: если тег, использующий thymeleaf

У меня есть текст для рендеринга в трех разных возможных цветах с помощью thymeleaf.

Итак, код, который я сделал до сих пор, чтобы проверить значение:

th:if="${evaluation} > 50"
th:if="${evaluation} < 30"

И это хорошо работает.

Но третий тест - это значения между этими двумя. Поэтому я попробовал:

th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"

но он не работает, у меня есть эта ошибка при разборе:

org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "(${evaluation} < 49) &and; (${evaluation} > 29)" (/property.html:41)

Конечно, эти строки находятся между тегами, поскольку первые два работают правильно.

Возможно, и операнд неверен, но документация тимелеафа на самом деле не является явной для этих операндов.

Все идеи приветствуются!

Обновление: Я получил ответ на форуме тимелеафа. Способ сделать это:

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"

Проблема решена!

Ответ 1

Я получил ответ от форума тимелеафа. Способ сделать это:

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"

Проблема решена!

Ответ 2

Это то, что сработало для меня:

th:if="${evaluation lt 49 and evaluation gt 29}"

Ответ 3

По моему мнению, лучшим и более удобным решением могло бы стать создание оценочного кода в соответствующем классе.

class Evaluator{

private int value;
....

public boolean isBounded() {
    return value < 49 && value > 29;
}

то в тимелеафе вызовите функцию:

<p th:if="${evaluator.isBounded()} ...

Некоторые преимущества:

  • Шаблон Cleaner.
  • Управление в Java-коде.
  • Изоляция. Более сложные оценки могут быть записаны без изменения шаблона.

Надеюсь, это поможет.