54

我有一个文本可以使用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)

当然,这些行是在标签之间,因为前两个工作正常。

也许 and 操作数不正确,但是 thymeleaf 的文档在这些操作数上并不是很明确。

欢迎所有想法!

更新:我从百里香论坛得到了答案。这样做的方法是:

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

问题解决了!

4

4 回答 4

68

我从百里香论坛得到了答案。这样做的方法是:

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

问题解决了 !

于 2013-05-08T09:30:21.223 回答
27

这对我有用:

th:if="${evaluation lt 49 and evaluation gt 29}"
于 2013-10-09T13:00:11.433 回答
16

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

class Evaluator{

private int value;
....

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

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

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

一些好处:

  1. 更清洁的模板。
  2. java代码中的控制。
  3. 隔离。可以在不更改模板的情况下编写更复杂的评估。

我希望这有帮助。

于 2013-11-02T15:22:51.680 回答
11

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

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

我在条件之间添加了and运算符。如果需要,您也可以添加或。

于 2018-07-20T15:26:09.933 回答