Как иметь несколько условий в 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)

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

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

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

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

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

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

4 ответов


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

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

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


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

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

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

class Evaluator{

private int value;
....

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

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

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

преимущества:

  1. чистого шаблона.
  2. управление в коде java.
  3. изоляции. Более сложные оценки могут быть написаны без изменения шаблона.

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


Я сделал это, чтобы иметь несколько условий в th:if в thymeleaf

<div 
     th:if="${object.getStatus()} == 'active' and ${object.getActiveDate()}"
     th:text="${#dates.format(object.getActiveDate(), 'yyyy-MM-dd')}"
</div>

добавил и оператор условия. Вы также можете добавить или при необходимости.