2011-04-11 2 views
0

У меня есть action viewLoginAction, который будет перенаправлен на login.jsp. В моем действии я хочу установить локаль для сеанса. Я выберу Locale, зависит от имени хоста.Struts2 как изменить язык при входе в систему?

http://patate -> LOCALE.FRENCH http://potato -> Locale.ENGLISH

Я стараюсь, что в моем действии

 
if(french){ 
    ActionContext.getContext().setLocale(LOCALE.FRENCH); 
} else { 
    ActionContext.getContext().setLocale(LOCALE.ENGLISH); 
} 

но в моем JSP. Языковой всегда сервер локали (французский)

я получаю: «Prénom» вместо «Firstname», когда задан язык английский язык в действии.

Что я пропустил?

EDIT

Я нашел свою проблему.

 


// on set la locale maintenant if(clinique.getLangue().equals(Langue.ENGLISH)){ ActionContext.getContext().setLocale(Locale.ENGLISH); } else { ActionContext.getContext().setLocale(Locale.FRENCH); } 


прекрасно работает .. Вам просто нужно иметь файл global_en.properties и global_fr.properties.

Я стараюсь, чтобы он работал как Struts 1 и использовал стандартные свойства global.properties, но выглядят так, как будто это не работает.

ответ

0

Что я предполагаю, что в вашем случае ActionContext.getCurrent().setLocale(). К сожалению, кажется, что новый новый ActionContext создается при вызове действия, а локаль сбрасывается по умолчанию.

Вот аналогичная нить для того же, и я также считаю, что вам нужно для достижения этой цели с помощью настраиваемого перехватчик

SO Link

Надежда это поможет вам

+0

я стараюсь, но есть та же проблема. –

+0

Я нашел свою проблему. // на set la locale maintenant if (clinique.getLangue(). Equals (Langue.ENGLISH)) {ActionContext.getContext(). SetLocale (Locale.ENGLISH); } else {ActionContext.getContext(). setLocale (Locale.FRENCH); } отлично работает. Вам просто нужно иметь файл global_en.properties и global_fr.properties. Я старался работать как Struts 1 и использовать глобальные свойства по умолчанию, но выглядят так, как будто это не работает. –

Смежные вопросы