2011-09-10 19 views
9

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}.Cómo obtener la configuración regional del visitante en JSP utilizando SpringLocationResolver de Spring 3

El problema, Creo que, es que solo me dará la configuración regional según los encabezados de solicitud del usuario (lo que envía el navegador). Sin embargo, el usuario puede haber cambiado su lenguaje/local, por lo que tenga que utilizar el mecanismo de resorte que se ve en la sesión también:

RequestContextUtils.getLocale(request).toString(); 

Pero entonces no es tan fácil de acceder que en una página JSP y tienen JSP código de trabajo con eso.

¿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?

Respuesta

2

Cuando 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 el código de 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.

1

Una solución de línea ..

RequestContextUtils.getLocale(request) 
21

Para nosotros

${pageContext.response.locale} 

hizo el truco. Esta propiedad sigue lo que ha sido establecido por el solucionador de locale de Spring.

Cuestiones relacionadas