thymeleafを使用して、3つの可能な色でレンダリングするテキストがあります。
したがって、値をテストするためにこれまでに作成したコードは次のとおりです。
th:if="${evaluation} > 50"
th:if="${evaluation} < 30"
そしてそれはうまくいきます。
しかし、3番目のテストは、これら2つの間の値に対するものです。だから私は試しました:
th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"
しかし、それは機能していません、解析中にこのエラーが発生しました:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "(${evaluation} < 49) ∧ (${evaluation} > 29)" (/property.html:41)
もちろん、最初の2つは適切に機能しているため、これらの行はタグの間にあります。
Andオペランドは正しくないかもしれませんが、thymeleafのドキュメントはそれらのオペランドについて実際には明示的ではありません。
すべてのアイデアを歓迎します!
更新: thymeleafフォーラムから回答を得ました。その方法は次のとおりです。
th:if="${evaluation < 49 and evaluation > 29}"
問題が解決しました!
私はthymeleafフォーラムから答えを得ました。それを行う方法は次のとおりです。
th:if="${evaluation < 49 and evaluation > 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()} ...
いくつかの利点:
これがお役に立てば幸いです。
Thymeleafのth:if
に複数の条件を設定するためにこれを行いました
<div
th:if="${object.getStatus()} == 'active' and ${object.getActiveDate()}"
th:text="${#dates.format(object.getActiveDate(), 'yyyy-MM-dd')}"
</div>
条件の間にand演算子を追加しました。必要に応じてorを追加することもできます。