Как установить локаль пользователя на JSP - PullRequest
4 голосов
/ 10 июня 2010

У меня есть страница .jsp, которую пользователь загружает напрямую. Запрос с URL-адресом, как показано ниже: <a href="http://www.example.com/myfile.jsp?country=CA&language=fr" rel="nofollow noreferrer">http://www.example.com/myfile.jsp?country=CA&language=fr</a>

В JSP я извлекаю параметры URL GET и пытаюсь установить языковой стандарт, используя их следующим образом:

<%
    String myLanguage = request.getParameter("language");
    String myCountry  = request.getParameter("country");

    Locale myLocale = new Locale(myLanguage, myCountry);
    pageContext.setAttribute("myLocale", myLocale, PageContext.PAGE_SCOPE);
%>
<fmt:setLocale value="${myLocale}" scope="page" />

В JSP есть несколько мест, в которых затем отображается сообщение, извлеченное из локализованного пакета ресурсов, с использованием <bean:message bundle="ts" key="..." /> из Struts.

При первом запросе этой страницы (после изменения языка в URL) она возвращается на английском языке США (локаль по умолчанию), а затем последующие обновления возвращают правильно локализованный контент.

1 Ответ

2 голосов
/ 10 июня 2010

Я не делаю Struts, но Google узнает, что вам нужно установить Locale в качестве атрибута сеанса с Globals.LOCALE_KEY в качестве ключа.

session.setAttribute(Globals.LOCALE_KEY, myLocale);

Вам на самом деле не нужен JSTL fmt:setLocale.

Тем не менее, я бы сделал это в одном Filter, а не в каждом JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...