En bref
Je veux avoir une instruction switch dans thymeleaf avec la logique une fois écrite dans plusieurs instructions case.
En détail
Je veux implémenter cela dans la feuille de thym
switch(status.value){
case 'COMPLETE':
case 'INVALID':
//print exam is not active
break;
case 'NEW':
//print exam is new and active
break;
}
Mon code thymleaf actuel qui échoue avec une erreur d'exécution
<div th:switch="${status.value}">
<div th:case="'COMPLETE','INVALID'">
<!-- print object is not active -->
</div>
<div th:case="NEW'">
<!-- print object is new and active -->
</div>
</div>
Mais le code ci-dessus échoue avec une erreur
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "'COMPLETE','INVALID'"...
Remarque: je connais la raison de ce message d'erreur ci-dessus. Tout ce dont j'ai besoin est de savoir comment implémenter un commutateur avec plusieurs cas pour une seule sortie
L'échec est dû au fait que vous n'avez pas d'expression valide dans le premier cas. Plus précisément,
'COMPLETE','INVALID'
n'est pas une expression valide. Je soupçonne que ce que vous essayez de faire est d'inclure le div si le statut est COMPLET ou INVALIDE. Malheureusement, je pense que vous devrez dupliquer le balisage pour ces conditions individuellement. Permettez-moi de suggérer le balisage suivant:
<!-- th:block rather than unneeded div -->
<th:block th:switch="${status.value}">
<div th:case="'COMPLETE'">
<!-- print object is not active -->
</div>
<div th:case="'INVALID'">
<!-- print object is not active -->
</div>
<div th:case="'NEW'">
<!-- print object is new and active -->
</div>
</th:block>
Vous pouvez également recourir à th: if qui pourrait réellement mieux fonctionner dans ce cas:
<div th:if="${status.value} eq 'COMPLETE' or ${status.value} eq 'INVALID'">
<!-- print object is not active -->
</div>
<div th:if="${status.value} eq 'NEW'">
<!-- print object is new and active -->
</div>
Ou encore plus simplement:
<div th:unless="${status.value} eq 'NEW'">
<!-- print object is not active -->
</div>
<div th:if="${status.value} eq 'NEW'">
<!-- print object is new and active -->
</div>