Cómo obtener la configuración regional del visitante en JSP usando SessionLocaleResolver de Spring 3
-
28-10-2019 - |
Pregunta
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 ubicación 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 es posible que el usuario haya cambiado su idioma / configuración regional, por lo que necesito usar el mecanismo de Spring que también analiza la sesión:
RequestContextUtils.getLocale(request).toString();
Pero entonces no es tan fácil acceder a eso en una página JSP y hacer que el código JSP funcione con ella.
¿O hay otro mecanismo más sencillo para mostrar un menú desplegable de idiomas a un usuario?¿Spring almacena la configuración regional actual en un objeto de fácil acceso desde JSP?
Solución
A medida que usa 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 el código java.
Buscaría la configuración regional actual y crearía la lista de idiomas seleccionables en el controlador y agregaría esto al modelo.
Esto hace que el código sea comprobable y mueve el código java del jsp al controlador.
Otros consejos
Para nosotros
${pageContext.response.locale}
funcionó.Esta propiedad sigue lo que ha sido configurado por el solucionador local de Spring.
Solución de una línea ..
RequestContextUtils.getLocale(request)