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

Problème résolu!

36
demandé sur hennr 2013-04-15 19:04:44

4 réponses

j'ai eu la réponse du forum thymeleaf. La façon de le faire est :

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

Problème résolu !

47
répondu brnrd 2013-05-08 09:30:21

C'est ce qui a fonctionné pour moi:

th:if="${evaluation lt 49 and evaluation gt 29}"
17
répondu user2779653 2013-10-09 13:00:11

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

  1. modèle plus propre.
  2. contrôle en code java.
  3. Isolement. Des évaluations plus complexes pourraient être rédigées sans que le modèle soit modifié.

j'espère que cette aide.

8
répondu Francisco Perez Pellicena 2013-11-02 15:22:51

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.

1
répondu Digvijay 2018-07-20 15:26:09