【发布时间】:2013-01-16 10:45:47
【问题描述】:
我想在他登录时在我的 JSF 应用程序中设置特定的用户区域设置。
为此,我从他的属性中获取用户区域设置并通过设置用户区域设置
FacesContext.getCurrentInstance().getViewRoot().setLocale(userLocale);
在成功登录的登录过程中。
我的问题是,当我在用户会话期间向用户显示消息时,我通过的语言环境
FacesContext context = FacesContext.getCurrentInstance();
if (context != null && context.getViewRoot() != null) {
locale = context.getViewRoot().getLocale();
...
始终是默认语言环境。
我的代码中没有设置语言环境的其他点,所以我无法弄清楚为什么会发生这种情况。
【问题讨论】:
-
因为 ViewRoot 是 request-scoped 的,所以它会随着每个新的 HTTP 请求而改变。您需要创建一些会话范围的 bean 并将 Locale 存储在那里。