Comment avoir des conditions multiples dans un TH: si tag en utilisant thymeleaf
j'ai un texte à rendre en trois couleurs possibles en utilisant thymeleaf.
Donc le code que j'ai fait jusqu'à présent pour tester la valeur est:
th:if="${evaluation} > 50"
th:if="${evaluation} < 30"
et ça marche bien.
Mais le troisième test est pour les valeurs entre les deux. Alors, j'ai essayé:
th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"
mais ça ne marche pas, j'ai cette erreur lors de l'analyse:
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "(${evaluation} < 49) ∧ (${evaluation} > 29)" (/property.html:41)
bien sûr, ces lignes sont entre les tags puisque les deux premiers fonctionnent correctement.
peut-être que l'opérande et n'est pas correcte, mais la documentation de thymeleaf n'est pas vraiment explicite sur ces opérandes.
Toutes les idées sont les bienvenues!
mise à Jour: j'ai eu la réponse du forum thymeleaf. La façon de le faire est:
th:if="${evaluation < 49 and evaluation > 29}"
Problème résolu!
4 réponses
j'ai eu la réponse du forum thymeleaf. La façon de le faire est :
th:if="${evaluation < 49 and evaluation > 29}"
Problème résolu !
C'est ce qui a fonctionné pour moi:
th:if="${evaluation lt 49 and evaluation gt 29}"
à mon avis, Une solution meilleure et plus maintenable pourrait être d'écrire le code d'évaluation dans une classe appropriée.
class Evaluator{
private int value;
....
public boolean isBounded() {
return value < 49 && value > 29;
}
puis dans thymeleaf, appelez la fonction:
<p th:if="${evaluator.isBounded()} ...
Certains avantages:
- modèle plus propre.
- contrôle en code java.
- Isolement. Des évaluations plus complexes pourraient être rédigées sans que le modèle soit modifié.
j'espère que cette aide.
j'ai fait cela pour avoir plusieurs conditions dans th:if
dans thymeleaf
<div
th:if="${object.getStatus()} == 'active' and ${object.getActiveDate()}"
th:text="${#dates.format(object.getActiveDate(), 'yyyy-MM-dd')}"
</div>
j'ai ajouté et opérateur entre les conditions. Vous pouvez également ajouter ou si nécessaire.