Was ist der beste Weg, um ein einfaches zu machen if
- else
in Thymeleaf?
Ich möchte in Thymeleaf den gleichen Effekt erzielen wie
<c:choose>
<c:when test="${potentially_complex_expression}">
<h2>Hello!</h2>
</c:when>
<c:otherwise>
<span class="xxx">Something else</span>
</c:otherwise>
</c:choose>
in JSTL.
Was ich bisher gedacht habe:
<div th:with="condition=${potentially_complex_expression}" th:remove="tag">
<h2 th:if="${condition}">Hello!</h2>
<span th:unless="${condition}" class="xxx">Something else</span>
</div>
Ich möchte nicht potentially_complex_expression
zweimal bewerten . Deshalb habe ich die lokale Variable eingeführt condition
. Trotzdem benutze ich nicht gerne beide th:if="${condition}
und th:unless="${condition}"
.
Eine wichtige Sache ist, dass ich zwei verschiedene HTML-Tags verwende: Sagen wir h2
und span
.
Können Sie einen besseren Weg vorschlagen, um dies zu erreichen?
Ich habe diesen Code ausprobiert, um herauszufinden, ob ein Kunde angemeldet oder anonym ist. Ich habe die
th:if
undth:unless
bedingten Ausdrücke verwendet. Ziemlich einfacher Weg, es zu tun.quelle
Ich möchte neben Daniel Fernández mein Beispiel in Bezug auf Sicherheit weitergeben.
Hier ist ein komplexer Ausdruck mit gemischten Dienstprogrammobjekten "Authentifizierung" und "Autorisierung", der ein "wahr / falsch" -Ergebnis für den Thymeleaf-Vorlagencode erzeugt.
Die Dienstprogrammobjekte "Authentifizierung" und "Autorisierung" stammen aus der springsecurity3-Bibliothek von thymeleaf extras . Wenn das Objekt 'Authentifizierung' nicht verfügbar ist ODER authorisation.expression ('isAuthenticated ()') als 'false' ausgewertet wird, gibt expression $ {false} zurück, andernfalls $ {true}.
quelle
Sie können verwenden
Beispiel:
Es könnte für die neuen Leute nützlich sein, die die gleiche Frage stellen.
quelle
Eine andere Lösung - Sie können lokale Variablen verwenden:
Weitere Informationen zu lokalen Variablen:
http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#local-variables
quelle
th:each
wo der Ausdruck:
statt=
Im einfacheren Fall (wenn HTML-Tags identisch sind):
quelle
Eine andere Lösung besteht darin, nur
not
die entgegengesetzte Negation zu erhalten:Wie in der Dokumentation erläutert , entspricht dies der Verwendung
th:unless
. Wie andere Antworten erklärt haben:Die Verwendung
not
funktioniert auch, aber meiner Meinung nach ist die Verwendung besser lesbar, alsth:unless
die Bedingung mit zu negierennot
.quelle
quelle
Geben Sie hier die Bildbeschreibung ein
quelle
Verwendung
th:switch
alsif-else
Verwendung
th:switch
alsswitch
quelle