Вопрос по struts2, internationalization, java – Получить локаль пользователя, обнаруженную перехватчиком i18n в классе действий

3

У меня есть веб-приложение, которое использует Struts 2. Я использую перехватчик i18n со всеми настройками по умолчанию. Я думал, что этот перехватчик работает следующим образом:

Если есть параметр request_locale, удалите этот параметр и поместите этот языковой стандарт в сеанс для будущего использования.Если параметр NO отсутствует, найдите в httpheader локаль и поместите эту локаль в сеанс для будущего использования.

Итак, в моем классе действий (который реализует sessionAware) у меня есть следующий метод:

public String getUserLocale()
{
    return (String) session.get("WW_TRANS_I18N_LOCALE");
}

Однако этот метод не работает в ситуации # 2, он просто возвращает ноль. Итак, мой вопрос: как я могу сообщить своему действию пользовательскую локаль, которую обнаружил перехватчик i18n, если нет явного параметра запроса? Потому что это не хранится в сеансе?

Ваш Ответ

1   ответ
4

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

Еслиrequest_locale параметр обнаруживаетсяi18n Перехватчик запрашиваемая локаль создается и помещается в контекст действия, а также в сеанс под ключом, указанным перехватчиком.

Если следующий запрос к перехватчику не включаетrequest_locale Параметр затем получает локаль, сохраненную в сеансе, если не найдено, используется локаль запроса.

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

 Locale locale = ActionContext.getContext().getLocale(); 
Это не так, как мы до сих пор не уверены, должно ли это быть ;-) Lukasz Lenart
Я мог бы использовать его, когда внутренний DI в Struts2 будет хорошо документирован. Спасибо за ваш комментарий в любом случае. Приветствия. Roman C
Вы также можете использовать@Inject LocaleProvider provider Lukasz Lenart

Похожие вопросы