2011-04-11 45 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