En utilisant Thymeleaf comme moteur de template, est-il possible d'ajouter / supprimer dynamiquement une classe CSS vers / depuis un simple div
avec la th:if
clause?
Normalement, je pourrais utiliser la clause conditionnelle comme suit:
<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a>
Nous allons créer un lien vers la page lorem ipsum , mais seulement si la clause condition est vraie.
Je cherche quelque chose de différent: j'aimerais que le bloc soit toujours visible, mais avec des classes variables en fonction de la situation.
Réponses:
Il y a aussi
th:classappend
.Si
isAdmin
c'est le castrue
, cela entraînera:la source
th:class
remplace / réécrit votre attribut de classe.th:classappend
est ce que vous voulez.th:classappend="${theRightClass}"
th:classappend
attributs. Un maximum est autorisé.Fatal error during parsing org.xml.sax.SAXParseException: Attribute "th:classappend" was already specified for element "img".
th:classremove
de supprimer une seule classe sans affecter les autres ou de coder en dur une liste de classes entière dans votre xml de liaison? Ou est-ce que laisser une classe dynamique désactivée et ajouter conditionnellement est la seule façon de procéder?Oui, il est possible de changer dynamiquement une classe CSS en fonction de la situation, mais pas avec
th:if
. Ceci est fait avec l' opérateur elvis .la source
À cette fin et si je n'ai pas de variable booléenne, j'utilise ce qui suit:
la source
Une autre réponse très similaire consiste à utiliser «égal» au lieu de «contient».
la source
Si vous voulez juste ajouter une classe en cas d'erreur, vous pouvez utiliser
th:errorclass="my-error-class"
mentionné dans la doc .la source
Juste pour ajouter ma propre opinion, au cas où cela pourrait être utile à quelqu'un. C'est ce que j'ai utilisé.
la source
Encore une autre utilisation de th: class, identique à @NewbLeech et @Charles ont posté, mais simplifiée au maximum s'il n'y a pas de cas "else":
N'inclut pas l'attribut de classe si # fields.hasErrors ('password') est faux.
la source
Ce que @Nilsi a mentionné est parfaitement correct. Cependant, adminclass et user class doivent être entourés de guillemets simples, car cela pourrait échouer en raison de la recherche de variables adminClass ou userclass qui devraient être des chaînes de Thymeleaf. Cela dit,
ça devrait être: -
ou juste:
la source
Si vous cherchez à ajouter ou supprimer une classe en conséquence si l'URL contient certains paramètres ou non, c'est ce que vous pouvez faire
Si l'url contient «home», la classe active sera ajoutée et vice versa.
la source
Juste au cas où quelqu'un utiliserait Bootstrap, j'ai pu ajouter plus d'une classe:
la source