Saltar al contenido

¿Cómo configuro una URL que incluye un ampersand con Thymeleaf?

Si encuentras algún fallo en tu código o trabajo, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.

Solución:

Para evitar este tipo de problemas en lugar del símbolo ‘&’, puede usar el código UTF para ese símbolo, por ejemplo, en el caso de UTF-8, use ‘u0026’.

Thymeleaf tuvo un problema reciente con la codificación de escapes, que se solucionó en 2.1.4.

Es mejor usar la sintaxis de URL de enlace dedicada de thymeleaf.

Si desea construir una URL con dos parámetros y establecerla en un href attribute puedes hacer esto:

link

El html generado será:

link

y el navegador solicitará:

page?param1=val1¶m2=val2

=== EDITAR ===

Para responder al voto negativo de dopatraman, acabo de probar (nuevamente) mi respuesta y funciona bien.

En mi respuesta, thymeleaf agrega automáticamente el ampersand utilizado como separador de parámetros. Y este ampersand añadido es entidad html codificada, por thymeleaf, para ser almacenada en el html.

Si tiene otro ampersand dentro de param1 o param2, este ampersand debe ser entidad html codificada dentro de la plantilla thymeleaf. Pero será aparecen por ciento codificados en el html generado.

Ejemplo (probado con thymeleaf 2.1.5.RELEASE):

param1 tiene valor abc y param2 tiene valor 12&3

Dentro de la plantilla de hoja de tomillo, todo el ampersand debe codificarse como entidad html y tenemos:

link

En el html generado, el ampersand utilizado como separador de parámetros está codificado como una entidad html y el ampersand en el valor param2 está codificado en porcentaje por thymeleaf:

link

Cuando haga clic en el enlace, el navegador decodificará la codificación de la entidad html pero no la codificación porcentual, y la URL en la barra de direcciones será:

link

Comprobando con wireshark, obtenemos de la solicitud HTTP:

GET /page?param1=abc¶m2=12%263

¡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 *