J'ai un texte à rendre dans trois couleurs possibles différentes 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 concerne les valeurs comprises entre ces deux. J'ai donc essayé:
th:if="(${evaluation} < 49) ∧ (${evaluation} > 29)"
mais cela ne fonctionne 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 balises car les deux premières fonctionnent correctement.
Peut-être que l'opérande et n'est pas correct, mais la documentation de thymeleaf n'est pas vraiment explicite sur ces opérandes.
Toutes les idées sont les bienvenues!
pdate: J'ai obtenu la réponse du forum thymeleaf. La façon de procéder est:
th:if="${evaluation < 49 and evaluation > 29}"
Problème résolu!
J'ai obtenu la réponse du forum thymeleaf. La façon de procéder 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 en thymeleaf, appelez la fonction:
<p th:if="${evaluator.isBounded()} ...
Quelques avantages:
J'espère que ça aide.
J'ai fait cela pour avoir plusieurs conditions dans th:if
en feuilles de thym
<div
th:if="${object.getStatus()} == 'active' and ${object.getActiveDate()}"
th:text="${#dates.format(object.getActiveDate(), 'yyyy-MM-dd')}"
</div>
J'ai ajouté l'opérateur et entre les conditions. Vous pouvez également ajouter o si nécessaire.