Saltar al contenido

¿Cómo hacer if-else en Thymeleaf?

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}.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *