我正在从数据库中检索用户的语言环境。每当用户登录时,页面应显示在该特定语言上。所以对于这个我在JSF中使用下面的代码
<f:metadata>
<f:event type="preRenderView" listener="#{language.preferredLocale}"/>
</f:metadata>
<ui:define name="content_pane">
<f:view locale="#{language.localeCode}"/>
</ui:define>
//language bean code is
public void preferredLocale(ComponentSystemEvent e){
// code to retrieve locale for particular user
}
但上面的代码无法在页面onload上设置语言环境。有没有其他方法我可以在页面加载上设置区域设置?
答案 0 :(得分:1)
这确实不是正确的方法。现在为时已晚。您需要确保<f:view locale>
已设置正确。
根据您当前的应用程序设计,有多种方法可以实现此目的。最简单的可能是以下内容:
@ManagedBean
@RequestScoped
public void LoginBean {
@ManagedProperty("#{localeBean}")
private LocaleBean localeBean;
public void submit() {
User user = userService.find(username, password);
if (user != null) {
localeBean.setLanguage(user.getPreferences().getLanguage());
// ...
}
// ...
}
// ...
}
答案 1 :(得分:0)
使用此
<f:view beforePhase=#{bean.viewBeforePhase} >