Acabo de terminar de localizar mi aplicación web usando la configuración de Spring Boot como base.
@Bean public LocaleResolver localeResolver() { return new CookieLocaleResolver(); }Debido a un requisito, se supone que uno puede cambiar la configuración regional/idioma del sitio web presionando un botón. Dicha función se implementa con un poco de JS y una cookie.
<script> function updateCookie(lang) { let name = "org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE" document.cookie = name+"="+lang location.reload() } </script> <a onclick="updateCookie('de')" class="flag-icon flag-icon-de mr-2"></a>La idea es actualizar dicha cookie al hacer clic en un botón y usarla en toda la aplicación. Esto funciona bien hasta que intento llamar a un punto final específico en mi aplicación.
Para depurar mi aplicación, uso:
window.onload = function () { alert(document.cookie) }Ahora a mi problema:
Cuando el usuario prueba la aplicación, esta es la alerta de retroalimentación:
org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=deCambiar a otras páginas, actualizar, cambiar el idioma, etc. restablece correctamente la cookie con un valor diferente.
Sin embargo, cuando llamo a un punto final específico, recibo la siguiente alerta:
org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=de; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=frEn lugar de restablecer/cambiar la cookie existente, se agrega una nueva con el valor 'de;'. Se agrega un punto y coma aparentemente aleatorio.
Esto no sucede con puntos finales que usan una lógica similar y una implementación casi idéntica. No hay más lógica fuera del pequeño código JS que publiqué y no estoy tocando la cookie en el backend.
Lamentablemente me quedé sin ideas. Cualquier consejo/ayuda sería apreciado.