JSF2.2 Primefaces:从模板客户端重新加载菜单栏

时间:2015-10-25 19:48:17

标签: templates jsf jsf-2 primefaces

我有一个模板,其中我的标题包含PrimeFaces菜单栏,我也实现了国际化。

我的问题是当我在模板客户端内部并更改语言时,我的菜单没有使用新语言进行更新。 MenuBar是数据库中的动态。以下是我的代码。

的template.xhtml

<div id="top" class="top">
        <h:form id="frmSessionUser">
            <p:selectOneMenu label="Lenguaje" id="drpLanguage" onchange="submit()" valueChangeListener="#{userSessionBean.setLocale}" value="#{userSessionBean.currentLocale}">
                    <f:selectItems value="#{domainsManagedBean.countries}"/>
            </p:selectOneMenu>
            <p:menubar model="#{menubarManagedBean.menubar}" > 
            </p:menubar>
        </h:form>
        <ui:insert name="top"></ui:insert>
    </div>

我的模板客户端就像

<body>
    <ui:composition template="./Layouts/generalLayout.xhtml">
        <ui:define name="top">
        </ui:define>
        <ui:define name="content">
            Here I have my page content
        </ui:define>
        <ui:define name="bottom">
        </ui:define>
    </ui:composition>
</body>

我的setLocale事件是

public void setLocale(ValueChangeEvent e){
  String newLocaleValue = e.getNewValue().toString();
  DomainsManagedBean domains = new DomainsManagedBean();
  for (Map.Entry<String, Object> entry : domains.getCountries().entrySet()) {
     if(entry.getValue().toString().equals(newLocaleValue)){
            FacesContext.getCurrentInstance()
            .getApplication().setDefaultLocale((Locale)entry.getValue()); 
            FacesContext.getCurrentInstance().getViewRoot().setLocale((Locale)entry.getValue());
     }
  }
} 

0 个答案:

没有答案