springframework - Cómo obtener la configuración regional del visitante en JSP utilizando SessionLocaleResolver de Spring 3
thymeleaf spring security 5 login (3)
Necesito obtener la configuración regional de un visitante en mis páginas JSP para poder mostrar correctamente un menú desplegable con una lista de idiomas y tener el idioma seleccionado de acuerdo con su configuración regional actual. Normalmente podría hacer algo como ${pageContext.request.locale}
.
El problema, creo , es que solo me dará la configuración regional de acuerdo con los encabezados de solicitud del usuario (lo que envía el navegador). Pero el usuario puede haber cambiado su idioma / configuración regional, por lo que necesito usar el mecanismo de Spring que también mira la sesión:
RequestContextUtils.getLocale(request).toString();
Pero entonces no es tan fácil acceder a eso en una página JSP y tener el código JSP funcionando.
¿O hay otro mecanismo más fácil para mostrar un menú desplegable de idiomas a un usuario? ¿Spring almacena la configuración regional actual en un objeto fácilmente accesible desde JSP?
A medida que utiliza el SessionLocaleResolver, la configuración regional actual se almacena en la sesión utilizando un nombre de atributo especificado en la clase SessionLocaleResolver. La referencia a SessionLocaleResolver se almacena en la solicitud utilizando otro nombre de atributo (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).
No veo una manera fácil de obtener la configuración regional directamente dentro de la página jsp sin usar código Java.
Buscaría la configuración regional actual y crearía la lista de idiomas seleccionables en el controlador y lo agregaría al modelo.
Esto hace que el código sea comprobable y mueve el código java del jsp al controlador.
Solución de una línea ...
RequestContextUtils.getLocale(request)
Para nosotros
${pageContext.response.locale}
Hizo el truco. Esta propiedad sigue lo que ha sido establecido por el solucionador de locale de Spring.