Как получить языковой стандарт посетителя в JSP, используя SessionLocaleResolver в Spring 3 - PullRequest
9 голосов
/ 10 сентября 2011

Мне нужно получить языковой стандарт посетителя на моих страницах JSP, чтобы я мог правильно отобразить раскрывающееся меню со списком языков и выбрать выбранный язык в соответствии с их текущим языковым стандартом.Обычно я могу сделать что-то вроде ${pageContext.request.locale}.

Проблема, Я думаю , заключается в том, что она выдаст мне локаль только в соответствии с заголовками запроса пользователя (что отправляет браузер).Но пользователь, возможно, изменил свой язык / локаль, поэтому мне нужно использовать механизм Spring, который также смотрит на сессию:

RequestContextUtils.getLocale(request).toString();

Но тогда не так легко получить доступ к этому на странице JSP и иметь JSPкод работает с ним.

Или есть другой более простой механизм для отображения выпадающего меню языков для пользователя?Сохраняет ли Spring текущую локаль в объекте, легко доступном из JSP?

Ответы [ 3 ]

23 голосов
/ 22 мая 2014

для нас

${pageContext.response.locale}

сделал свое дело. Это свойство соответствует тому, что было настроено преобразователем локали Spring.

2 голосов
/ 20 сентября 2011

При использовании SessionLocaleResolver текущая локаль сохраняется в сеансе с использованием имени атрибута, указанного в классе SessionLocaleResolver. Ссылка на SessionLocaleResolver сохраняется в запросе с использованием другого имени атрибута (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).

Я не вижу простого способа получить языковой стандарт непосредственно на странице jsp без использования кода Java.

Я бы выбрал текущую локаль, создал бы список доступных для выбора языков в контроллере и добавил бы это к модели.

Это делает код тестируемым и перемещает код java из jsp в контроллер.

1 голос
/ 13 декабря 2012

Решение одной линии ..

RequestContextUtils.getLocale(request)
...