Cómo obtener la configuración regional del visitante en JSP usando SessionLocaleResolver de Spring 3

StackOverflow https://stackoverflow.com/questions/7368863

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?

¿Fue útil?

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top