我一直在寻找关于如何通过Locale
重置/更改Java(Spring)Web应用程序的Locale.setDefault(new Locale ("en", "US"))
的答案。有人可以帮助我,因为看到我在我的网络应用程序中设置Locale后,我无法通过简单地调用Locale.setDefault(new Locale ("newLang", "newCountry"))
来改变它,这是令人沮丧的。
是否在服务器上缓存了区域设置?
答案 0 :(得分:3)
Locale.setDefault
是全球性的。如果您有两个用户需要使用无法解决的不同语言环境。
您应该将语言环境放在HttpServletRequest.getSession()
。
在我们完成全局setDefault之后,它甚至切换了应用程序服务器的语言和日志记录。
答案 1 :(得分:1)
Locale.setDefault(...)
对于何时或可以调用多少次没有限制。安全经理可以防止这种变化,但我认为这不是你的情况,因为你没有提到任何例外(但以防万一,验证你是否隐藏{{ 1}}在try-catch块中。)
您可能会观察到此类行为的其他原因是,您的应用程序可能只获取一次默认语言环境,对其进行缓存并永久使用?
答案 2 :(得分:-2)
public String arabic_lng() {
// Add event code here...
FacesContext ha_faces= FacesContext.getCurrentInstance();
Locale ar = new Locale("ar","SA");
Locale.setDefault(new Locale ("ar","SA"));
System.out.println(ar.getDisplayName(ar));
ha_faces.getViewRoot().setLocale(ar);
return null ;
}
public String eng_lng() {
// Add event code here...
FacesContext ha_faces= FacesContext.getCurrentInstance();
Locale en = new Locale("en", "US");
System.out.println(en.getDisplayName(en));
ha_faces.getViewRoot().setLocale(en);
Locale.setDefault(new Locale ("en", "US"));
return null ;
}