【问题标题】:execute the method before load JSF Page在加载 JSF 页面之前执行方法
【发布时间】:2013-07-27 18:23:45
【问题描述】:

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

【问题讨论】:

    标签: spring jsf primefaces localization facelets


    【解决方案1】:

    这确实不是正确的方法。那时为时已晚。您需要确保 &lt;f:view locale&gt; 已正确设置。

    无论如何,有几种方法可以实现这一点,具体取决于您当前的应用程序设计。最简单的可能如下:

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

    【讨论】:

    【解决方案2】:

    使用这个

    <f:view beforePhase=#{bean.viewBeforePhase} >
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2021-08-02
      • 1970-01-01
      • 2015-04-07
      相关资源
      最近更新 更多