Я внедрил пользовательский ActionMapper, который получает локаль из URI (сам URI, а не параметры запроса). Из ActionMapper.getMapping(), как мне установить локаль для текущего действия?Как установить язык в пользовательском Struts 2 ActionMapper
Вот некоторые идеи, которые я уже рассмотрели:.
- ActionContext.getCurrent() Setlocale(). К сожалению, кажется, что новый новый ActionContext создается, когда действие вызывается, и языковой стандарт сбрасывается по умолчанию.
- Установите параметр request_locale, который будет обработан перехватчиком i18n. К сожалению, перехватчик i18n настаивает на настройке локали не только для текущего действия, но и для текущего сеанса, что вызывает исключение, поскольку сеансы не включены для моего приложения.
- Задайте параметр и обработайте его в самом действии, выполнив setLocale(). Прямо, но это означает, что ни один из перехватчиков не будет иметь доступ к языку.
- Задайте параметр и запишите перехватчик (в основном выполните то же самое, что и перехватчик i18n, не допуская поддержки сеанса). Похоже на излишнюю проблему для такой простой проблемы, не говоря уже о повторной разработке колеса.
Есть ли простой способ достичь этого?
Если вам нужно локалите по всем вашим перехватчикам, я думаю, что вы застряли заново изобретать колесо с пользовательских i18n перехватчиком. Я удивлен, что ActionContext воссоздается - я решил, что ваша первая идея тоже сработает. – Pat