1

我正在从数据库中检索用户的语言环境。每当用户登录时,页面应该以该特定语言显示。所以为此我在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 上设置语言环境。有没有其他方法可以在页面加载时设置语言环境?

4

2 回答 2

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());
            // ...
        }

        // ...
    }

    // ...
}
于 2013-07-27T15:01:16.193 回答
0

用这个

<f:view beforePhase=#{bean.viewBeforePhase} >
于 2013-07-29T07:05:41.537 回答