Tengo una aplicación Spring-MVC con Freemarker como componente de vista.¿Cómo puedo enviar una clave hash en un parámetro de URL?
En mis plantillas, se generan varios enlaces que apuntan a mi aplicación y que incluyen parámetros de URL que contienen una clave hash (#
).
Ejemplo:
parámetro: Q#106368 11
URL generado por Freemarker con PARAM codificada: testurl.html?key=Q%23106368%2011
utilizo JavaScript para redirigir a esta dirección URL (razón: Yo uso JS para gestionar la carga de 2 marcos al mismo tiempo).
El método de redirección es simple:
function redir(url) {
window.location.href = url;
}
La llamada JS generada por Freemarker parece
<a href="javascript:redir('http://localhost:8080/testappp/testurl.html?key=Q%23106368%2011');">test</a>
Mi problema es que el navegador/Javascript convierte de nuevo el parámetro URL codificada, piensa que hay a #
y corta allí.
Cuando uso window.location.href='http://...'
directamente funciona. Solo cuando se utiliza el parámetro del método, parece que se decodifica URL mágicamente y luego la redirección falla porque la URL se corta en el #
.
¿Hay una manera fácil de transmitir el parámetro correctamente?
Soy consciente de que podría reemplazar el #
, p. Ej. con $$$hash$$$
, en la plantilla y hacer el reemplazo en el lado del servidor de nuevo. Pero hay tantos lugares que tendría que cambiar ...
Convenido. Cualquier navegador que * convierte * este escape de regreso sería una basura seria. –
Es decir, copie la ubicación del enlace o inspecciónelo directamente desde el código. –
Gracias por su respuesta. Eché un vistazo más de cerca y olvidé mencionar un detalle que es muy importante, pero nunca pensé que sería. Utilizo un método de redirección de Javascript y sucede cuando uso este método. Funciona bien cuando copio y pego la URL en el navegador. Por lo tanto, no es un problema de Java/Spring/navegador, es un problema de Javascript. He actualizado la pregunta en consecuencia. – tvirtualw