Как получить локаль посетителя в JSP с помощью Spring 3 SessionLocaleResolver
-
28-10-2019 - |
Вопрос
Мне нужно получить языковой стандарт посетителя на моих страницах JSP, чтобы я мог правильно отображать раскрывающееся меню со списком языков и иметь выбранный язык в соответствии с их текущим языковым стандартом.Обычно я могу сделать что-то вроде ${pageContext.request.locale}
.
Проблема, я думаю , заключается в том, что мне предоставляется только языковой стандарт в соответствии с заголовками запроса пользователя (что отправляет браузер).Но пользователь мог изменить свой язык / локаль, поэтому мне нужно использовать механизм Spring, который тоже просматривает сеанс:
родовое словоНо тогда не так просто получить доступ к нему на странице JSP и заставить код JSP работать с ним.
Или есть другой более простой механизм отображения раскрывающегося меню языков пользователю?Сохраняет ли Spring текущую локаль в объекте, легко доступном из JSP?
Решение
При использовании SessionLocaleResolver текущая локаль сохраняется в сеансе с использованием имени атрибута, указанного в классе SessionLocaleResolver.Ссылка на SessionLocaleResolver сохраняется в запросе с использованием другого имени атрибута (org.springframework.web.servlet.DispatcherServlet # LOCALE_RESOLVER_BEAN_NAME).
Я не вижу простого способа получить языковой стандарт прямо на странице jsp без использования кода Java.
Я бы получил текущий языковой стандарт, создал список выбираемых языков в контроллере и добавил его в модель.
Это делает код пригодным для тестирования и перемещает Java-код из jsp в контроллер.
Другие советы
Для нас
родовое словосделал свое дело.Это свойство соответствует тому, что было установлено преобразователем языковых стандартов Spring.
Однострочное решение ..
родовое слово