En utilisant Thymeleaf en tant que moteur de template, est-il possible d'ajouter/supprimer dynamiquement une classe CSS à/d'un simple div
avec la clause th:if
?
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 uniquement 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.
Il y a aussi th:classappend
.
<a href="" class="baseclass" th:classappend="${isAdmin} ? adminclass : userclass"></a>
Si isAdmin
est true
, il en résultera:
<a href="" class="baseclass adminclass"></a>
Oui, il est possible de changer une classe CSS de manière dynamique en fonction de la situation, mais pas avec th:if
. Ceci est fait avec le opérateur elvis .
<a href="lorem-ipsum.html" th:class="${isAdmin}? adminclass : userclass">Lorem Ipsum</a>
Une autre réponse très similaire consiste à utiliser "égal à" au lieu de "contient".
<li th:class="${#strings.equals(pageTitle,'How It Works')} ? active : ''">
À cette fin, et si je n'ai pas de variable booléenne, j'utilise ce qui suit:
<li th:class="${#strings.contains(content.language,'CZ')} ? active : ''">
Si vous voulez juste ajouter une classe en cas d'erreur, vous pouvez utiliser th:errorclass="my-error-class"
mentionné dans la doc .
<input type="text" th:field="*{datePlanted}" class="small" th:errorclass="fieldError" />
Appliqué à une balise de champ de formulaire (entrée, sélection, zone de texte, etc.), il lit le nom du champ à examiner à partir de tout nom existant ou d'attributs th: field dans la même balise, puis ajoute la classe CSS spécifiée à la balise. si ce champ a des erreurs associées
Encore une autre utilisation de th: class, identique à @NewbLeech et @Charles, mais simplifiée au maximum s’il n’ya pas de cas "else":
<input th:class="${#fields.hasErrors('password')} ? formFieldHasError" />
N'inclut pas d'attribut de classe si # fields.hasErrors ('password') est false.
Juste pour ajouter ma propre opinion, au cas où cela pourrait être utile à quelqu'un. C'est ce que j'ai utilisé.
<div th:class="${request.read ? 'mdl-color-text--grey-800 w500' : ''}"> </div>