2011-04-11 101 views
0

我有一個操作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。該區域始終是服務器的語言環境(法語)

我得到:「Prenom」,而不是「名字」,當區域設置爲英語的動作。

我錯過了什麼?

編輯

,我發現我的問題。

 


// 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

我嘗試,但得到一樣的問題。 – 2011-04-11 22:37:38

+0

我發現我的問題。 // set la locale maintenant if(clinique.getLangue()。equals(Langue.ENGLISH)){ActionContext.getContext()。setLocale(Locale.ENGLISH); }其他{ActionContext.getContext()。setLocale(Locale.FRENCH); } 工作正常..你只需要有一個文件global_en.properties和global_fr.properties。 我很努力,它像Struts 1一樣工作,並使用默認的global.properties,但看起來不像那樣工作。 – 2011-04-11 23:56:40