Cómo NO hacer iteraciones anidadas en thymeleaf 3

Escenario

Me han pedido que integre en una nueva aplicación una funcionalidad de otra ya existente. No es la primera vez que me ha tocado hacerlo. Suele ser un trabajo tedioso basado en continuos copia y pega y frecuentes refactorizaciones. Una de la vistas que debo importar en la nueva aplicación muestra una tabla con filas desplegables. Para ello utilizaba, con Thymeleaf, un bucle anidado en la vieja aplicación y bootstrap collapse para mostrar y esconder las filas.

Problema

El mismo código en la nueva aplicación no funciona. No se muestran los datos del bucle anidado. Depuro el valor de las variables, en el controlador y la vista, pero sigo sin entender por qué no se muestran los datos del segundo bucle. Sospecho que pueda ser debido a un cambio en la versión de Thymeleaf. En la aplicación antigua está instalada una versión 2.x y en la nueva una 3.x. Pero en la documentación oficial no encuentro nada que explique el cambio de comportamiento del bucle anidado.

Solución

Tampoco encuentro la solución en Stackoverflow, pero sí un post que me encamina hacia ella. Un usuario comparte una muestra de su código en la que utiliza el elemento th:block para delimitar parte de la lógica en su plantilla. Falto de ideas decides probar a cambiar el bloque contenedor del segundo bloque, de un tr a un th:block: Ya funciona. Por lo visto, en la nueva versión de Thymeleaf para anidar un th:each ha de estar incluido en un elemento th:block.

Publicaciones Similares

  • Sonata Admin: el calendario no se cierra

    Escenario Incluir un filtro de rango de fechas en SonataAdmin que use un calendario para seleccionar la fecha es más o menos fácil. Primero añadimos el siguiente bloque en el admin de nuestra entidad:

    Y la siguiente clave bajo form_themesen el fichero config/packages/twig.yaml:

    Problema El calendario no se cierra automáticamente cuando se selecciona…

  • Hibernate no puede resolver la propiedad…

    Escenario En una aplicación Spring Boot v2.3.4 hay dos entidades Balance y Shop. Una tienda (shop) puede tener varios saldos y un saldo (Balance) ha de estar relacionado con una tienda. Además existen panaderías (Bakery) y sastrerías (TailorShop) que extienden la clase Shop:

    Y necesito saber cuál es la fecha del…

Deja una respuesta

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