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

brn*_*nrd 43 html java spring jstl thymeleaf

我有一个文本使用百里香叶呈现三种不同的颜色.

所以我到目前为止测试该值的代码是:

th:if="${evaluation} > 50"
th:if="${evaluation} < 30"
Run Code Online (Sandbox Code Playgroud)

这很有效.

但第三个测试是针对这两者之间的值.所以我尝试过:

th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"
Run Code Online (Sandbox Code Playgroud)

但是它不起作用,我在解析时遇到了这个错误:

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

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

也许操作数和操作数不正确,但百里香叶的文档并没有真正明确这些操作数.

欢迎所有想法!

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

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"
Run Code Online (Sandbox Code Playgroud)

问题解决了!

brn*_*nrd 54

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

th:if="${evaluation &lt; 49 and evaluation &gt; 29}"
Run Code Online (Sandbox Code Playgroud)

问题解决了 !


use*_*653 21

这对我有用:

th:if="${evaluation lt 49 and evaluation gt 29}"
Run Code Online (Sandbox Code Playgroud)

  • 与接受的答案相同,但语法更清晰.如果这被认为是有效的,那应该是公认的答案. (3认同)

小智 10

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

class Evaluator{

private int value;
....

public boolean isBounded() {
    return value < 49 && value > 29;
}
Run Code Online (Sandbox Code Playgroud)

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

<p th:if="${evaluator.isBounded()} ...
Run Code Online (Sandbox Code Playgroud)

一些好处:

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

我希望这有帮助.

  • 这不回答这个问题. (4认同)

Dig*_*jay 5

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

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

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