我有一个应用程序,用户可以在我的应用程序的欢迎页面之间动态切换区域设置。我看到早期的开发人员(继承了没有太多文档的代码)已经从ViewHandler中覆盖了以下三个方法,并告诉我这是动态切换Locale所必需的...任何帮助都非常感谢
此外,请告诉我是否有更好的方法来处理此
public Locale calculateLocale(FacesContext facescontext)
{
Locale userLocale = LocaleManager.getInstance().getCurrentLocale();
if (userLocale != null)
{
return userLocale;
}
else
{
return delegate.calculateLocale(facescontext);
}
}
public void renderView(FacesContext facescontext, UIViewRoot uiviewroot)
throws IOException, FacesException {
uiviewroot.setLocale(LocaleManager.getInstance().getCurrentLocale());
delegate.renderView(facescontext, uiviewroot);
}
public UIViewRoot createView(FacesContext facescontext, String s)
{
UIViewRoot view = delegate.createView(facescontext, s);
view.setLocale(LocaleManager.getInstance().getCurrentLocale());
return view;
}
答案 0 :(得分:9)
我的解决方案是:
Locale
实例为每种受支持的语言提供以下按钮(或链接):
<h:commandButton action="#{localeBean.changeLocal}">
<f:setPropertyActionListener target="#{localeBean.selectedLanguage}"
value="en" />
</h:commandButton>
根据传递的语言(new Locale(lang)
)
<f:view locale="#{localeBean.currentLocale}">