如何在使用百日咳的th:if标签中有多个条件

时间:2013-04-15 15:04:45

标签: java html spring jstl 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}"

问题解决了!

4 个答案:

答案 0 :(得分:51)

我从百万富翁论坛得到了答案。做到这一点的方法是:

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

问题解决了!

答案 1 :(得分:19)

这对我有用:

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

答案 2 :(得分:10)

在我看来,一个更好,更易维护的解决方案可能是在适当的类中编写评估代码。

class Evaluator{

private int value;
....

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

然后在百里香中,调用函数:

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

一些好处:

  1. 清洁模板。
  2. 在java代码中控制。
  3. 隔离。可以在不更改模板的情况下编写更复杂的评估。
  4. 我希望这会有所帮助。

答案 3 :(得分:4)

我这样做是为了在百里香叶th:if中有多个条件

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

我在条件之间添加了运算符。您还可以根据需要添加