Comment puis-je vérifier si une variable est définie dans Thymeleaf ?
Quelque chose comme ça en Javascript:
if (typeof variable !== 'undefined') { }
ou ceci en PHP:
if (isset($var)) { }
Existe-t-il un équivalent dans Thymeleaf?
Oui, vous pouvez facilement vérifier si une propriété donnée existe pour votre document en utilisant le code suivant. Notez que vous créez la balise div
si la condition est remplie:
<div th:if="${variable != null}" th:text="Yes, variable exists!">I wonder, if variable exists...</div>
Si vous voulez utiliser le champ variable
, vérifiez si ce champ existe aussi
<div th:if="${variable != null && variable.name != null}" th:text="${variable.name}">I wonder, if variable.name exists...</div>
Ou même plus court, sans utiliser si déclaration
<div th:text="${variable?.name}">I wonder, if variable.name exists...</div>
Mais en utilisant cette instruction, vous finirez par créer la balise div
que variable
ou variable.name
existe
Vous pouvez en apprendre plus sur les conditionnels dans thymeleaf ici
Forme courte:
<div th:if="${currentUser}">
<h3>Name:</h3><h3 th:text="${currentUser.id}"></h3>
<h3>Name:</h3><h3 th:text="${currentUser.username}"></h3>
</div>
Pour savoir si le contexte contient une variable donnée, vous pouvez demander directement à la carte de variable de contexte. Cela permet de déterminer si la variable est spécifiée, par opposition aux seuls cas où elle est définie mais avec une valeur null.
Utilisez la méthode #vars
object's containsKey
:
<div th:if="${#vars.containsKey('myVariable')}" th:text="Yes, $myVariable exists!"></div>
Utilisez la méthode #ctx
object's containsVariable
:
<div th:if="${#ctx.containsVariable('myVariable')}" th:text="Yes, $myVariable exists!"></div>
Vous pouvez utiliser des opérateurs conditionnels. Ceci écrira une variable s'il existe ou une chaîne vide:
<p th:text="${variable}?:''"></p>