jsf区域设置落后1步,带有htmlpanelgrid(由于auf恢复视图而未更新)

jsf区域设置落后1步,带有htmlpanelgrid(由于auf恢复视图而未更新),jsf,view,restore,Jsf,View,Restore,我正在使用htmlpanelgrid与构建动态导航。 该页面包含3个用于更改语言的命令链接(带有图像)。 如果我点击图像(commandlink)更改语言,导航总是比新语言落后一步 导航将在第1阶段(还原视图)上生成,新语言将在第5阶段设置。 也就是说,如果我更改了语言,则在设置新值之前,将使用旧语言构建htmlpanelgrid。 如何摆脱它? 谢谢 在操作方法期间,需要在UIViewRoot上显式设置区域设置 public void changeLocaleAction() { lo

我正在使用htmlpanelgrid与构建动态导航。 该页面包含3个用于更改语言的命令链接(带有图像)。 如果我点击图像(commandlink)更改语言,导航总是比新语言落后一步

导航将在第1阶段(还原视图)上生成,新语言将在第5阶段设置。 也就是说,如果我更改了语言,则在设置新值之前,将使用旧语言构建htmlpanelgrid。 如何摆脱它?
谢谢

在操作方法期间,需要在
UIViewRoot
上显式设置区域设置

public void changeLocaleAction() {
    locale = new Locale(language);
    FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
否则,您需要将重定向发送回同一视图

public String changeLocaleAction() {
    locale = new Locale(language);
    return FacesContext.getCurrentInstance().getViewRoot().getViewId() + "?faces-redirect=true";
}
另见:

区域设置存储在会话Bean中,技巧是:返回FacesContext.getCurrentInstance().getViewRoot().getViewId()+“?faces redirect=true”;成功了,再次感谢!祝你今天愉快