Как получить языковой стандарт посетителя в JSP, используя SessionLocaleResolver в Spring 3

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

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

RequestContextUtils.getLocale(request).toString();

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

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

3 ответа

Решение

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

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

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

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

Для нас

${pageContext.response.locale}

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

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

RequestContextUtils.getLocale(request)
Другие вопросы по тегам