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

  • Instala un certificado SSL en tres pasos

    Escenario Todavía tienes una aplicación web, servida por nginx, a la que solo se puede acceder por http. Objetivo Instalar el certificado de SSL gratuito en tres pasos. Usaremos a modo de ejemplo el subdominio certbot.technoage.net. Pasos 1. Añadir el repositorio $ sudo add-apt-repository ppa:certbot/certbot 2. Instalar el paquete de cerbot para nginx $ sudo apt-get update && sudo apt-get install python-certbot-nginx 3. Obtener el certificado…

  • Tablas con nombre reservado en entidades en Spring Boot

    Escenario Tenemos una aplicación corriendo sobre Spring Boot que usa Hibernate como ORM. Una de las tablas se llama Group, se utiliza para almacenar los distintos grupos a los que puede pertenecer un usuario. Problema La entidad de java que representa la tabla de grupos tiene esta pinta:

    Sabía que group es una palabra…

  • Renovación de la llave gpg

    Escenario En mi trabajo usamos gpg para cifrar los documentos con información sensible. Problema Resulta que, en su día, di de alta la clave con una esperanza de vida de dos años. Y dos años pasan muy rápido. Solución Estos son los comandos que hay que ejecutar para extender la fecha de caducidad. Para listar…

  • 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…

Deja una respuesta

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