Durch die Verwendung von Thymeleaf als Template - Engine ist es möglich , hinzufügen / entfernen dynamisch eine CSS - Klasse zu / von einem einfachen div
mit der th:if
Klausel?
Normalerweise könnte ich die Bedingungsklausel wie folgt verwenden:
<a href="lorem-ipsum.html" th:if="${condition}">Lorem Ipsum</a>
Wir werden einen Link zur Lorem Ipsum- Seite erstellen , aber nur, wenn die Bedingungsklausel wahr ist.
Ich suche etwas anderes: Ich möchte, dass der Block immer sichtbar ist, aber mit je nach Situation veränderbaren Klassen.
Antworten:
Es gibt auch
th:classappend
.Wenn dies der Fall
isAdmin
isttrue
, führt dies zu:quelle
th:class
ersetzt / schreibt Ihr Klassenattribut neu.th:classappend
ist was du willst.th:classappend="${theRightClass}"
th:classappend
Attribute haben können. Max eins ist erlaubt.Fatal error during parsing org.xml.sax.SAXParseException: Attribute "th:classappend" was already specified for element "img".
th:classremove
Möglichkeit, eine einzelne Klasse zu entfernen, ohne die anderen zu beeinflussen oder eine gesamte Klassenliste in Ihrer Bindungs-XML hart zu codieren? Oder ist es der einzige Weg, eine dynamische Klasse auszulassen und bedingt anzuhängen?Ja, es ist möglich, eine CSS-Klasse je nach Situation dynamisch zu ändern, jedoch nicht mit
th:if
. Dies erfolgt mit dem elvis-Operator .quelle
Zu diesem Zweck und wenn ich keine boolesche Variable habe, verwende ich Folgendes:
quelle
Eine andere sehr ähnliche Antwort ist die Verwendung von "gleich" anstelle von "enthält".
quelle
Wenn Sie im Fehlerfall nur eine Klasse anhängen möchten, können
th:errorclass="my-error-class"
Sie die im Dokument erwähnte verwenden .quelle
Noch eine andere Verwendung der Klasse th:, wie sie @NewbLeech und @Charles veröffentlicht haben, jedoch auf das Maximum vereinfacht, wenn es keinen "else" -Fall gibt:
Enthält kein Klassenattribut, wenn # fields.hasErrors ('password') false ist.
quelle
Nur um meine eigene Meinung hinzuzufügen, falls es für jemanden nützlich sein könnte. Das habe ich benutzt.
quelle
Was @Nilsi erwähnte, ist vollkommen richtig. Adminclass und User Class müssen jedoch in einfache Anführungszeichen gesetzt werden, da dies möglicherweise fehlschlägt, da Thymeleaf nach adminClass- oder Userclass-Variablen sucht, die Zeichenfolgen sein sollten. Das gesagt,
es sollte sein: -
oder nur:
quelle
Wenn Sie eine Klasse entsprechend hinzufügen oder entfernen möchten, ob die URL bestimmte Parameter enthält oder nicht. Dies können Sie tun
Wenn die URL 'home' enthält, wird eine aktive Klasse hinzugefügt und umgekehrt.
quelle