我有一个模板,其中我的标题包含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());
}
}
}