2013-04-15 5 views
35

У меня есть текст для рендеринга в трех разных возможных цветах с использованием thymeleaf.Как иметь несколько условий в th: if tag using 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}" 

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

ответ

44

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

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

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

16

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

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

Использование объекта Date Я нашел следующие работы ** th: if = "$ {date.month ge 4 и date.month le 4}" ** – Benjamin

+3

Тот же ответ, что и принятый, но более чистый синтаксис. Если это связано с работой, это должен быть принятый ответ. –

8

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

class Evaluator{ 

private int value; 
.... 

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

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

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

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

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

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

+3

Это не отвечает на вопрос. –