我正在尝试使我的 Web 应用程序国际化,因此我正在使用 ResourceBundle 并使用以下方法动态更改语言环境:
FacesContext.getCurrentInstance()
.getViewRoot().setLocale(locale);
起初效果很好。但我正在尝试使用 AJAX 调用来更新页面,并且程序使用第三方 servlet 来处理 AJAX 调用。所以现在当我的 bean 被调用时,它不断得到一个空异常(因为我不在 FacesServlet 中,我在其他一些 servlet 中)。
调用 ajax 的代码看起来像
<revit:button id="ajaxMe" type="button"
onClick="primeAjaxCall();localeCodeChanged();">Select Language</revit:button>
<revit:ajax method="#{stringbean.localeCodeChanged}"
call="localeCodeChanged" callback="ajaxCallback" postData="parameter" />
托管 bean 代码:
public AJAXResponse localeCodeChanged(Map<String, String[]> parameterMap, Map<String, String> headers)
{
// read in the parameters to get the locale
// how can I effectively call this without null pointer?
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
有任何想法吗?