Solución:
Thymeleaf tiene un equivalente a <c:choose>
y <c:when>
: los th:switch
y th:case
atributos introducidos en Thymeleaf 2.0.
Funcionan como era de esperar, usando *
para el caso predeterminado:
<div th:switch="${user.role}">
<p th:case="'admin'">User is an administrator</p>
<p th:case="#{roles.manager}">User is a manager</p>
<p th:case="*">User is some other thing</p>
</div>
Consulte esto para obtener una explicación rápida de la sintaxis (o los tutoriales de Thymeleaf).
Descargo de responsabilidad: Como lo requieren las reglas de StackOverflow, soy el autor de Thymeleaf.
Probé este código para averiguar si un cliente está conectado o es anónimo. Lo hice usando el th:if
y th:unless
expresiones condicionales. Una forma bastante sencilla de hacerlo.
<!-- IF CUSTOMER IS ANONYMOUS -->
<div th:if="${customer.anonymous}">
<div>Welcome, Guest</div>
</div>
<!-- ELSE -->
<div th:unless="${customer.anonymous}">
<div th:text=" 'Hi,' + ${customer.name}">Hi, User</div>
</div>
Me gustaría compartir mi ejemplo relacionado con la seguridad además de Daniel Fernández.
<div th:switch="${#authentication}? ${#authorization.expression('isAuthenticated()')} : ${false}">
<span th:case="${false}">User is not logged in</span>
<span th:case="${true}">Logged in user</span>
<span th:case="*">Should never happen, but who knows...</span>
</div>
Aquí hay una expresión compleja con objetos de utilidad mixtos de ‘autenticación’ y ‘autorización’ que produce un resultado ‘verdadero / falso’ para el código de plantilla de thymeleaf.
Los objetos de utilidad ‘autenticación’ y ‘autorización’ provienen de la biblioteca springsecurity3 extras de thymeleaf. Cuando el objeto ‘autenticación’ no está disponible O autorización.expresión (‘isAuthenticated ()’) se evalúa como ‘falso’, la expresión devuelve $ {falso}, de lo contrario $ {verdadero}.