web-dev-qa-db-fra.com

Comment avoir plusieurs conditions dans un th: if tag en utilisant thymeleaf

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) &and; (${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 &lt; 49 and evaluation &gt; 29}"

Problème résolu!

41
brnrd

J'ai obtenu la réponse du forum thymeleaf. La façon de procéder est:

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

Problème résolu !

52
brnrd

C'est ce qui a fonctionné pour moi:

th:if="${evaluation lt 49 and evaluation gt 29}"
19
user2779653

À 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:

  1. Modèle plus propre.
  2. Contrôle en Java.
  3. Isolement. Des évaluations plus complexes pourraient être écrites sans changer le modèle.

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.

5
Digvijay