在你的 faces-config.xml 中定义默认语言
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
建议你的 bean 是@SessionScoped
,然后考虑创建一个 bean 只是为了控制你的系统的位置。
在您的 Bean 中创建此属性。
private static Map<String,Locale> countries;
static{
countries = new HashMap<String,Locale>();
countries.put("fr", Locale.FRANCE);
countries.put("en", Locale.ENGLISH);
}
添加更改语言的方法。
public void changeLanguage(){
FacesContext context = FacesContext.getCurrentInstance();
String language = context.getExternalContext().getRequestParameterMap().get("selectedLanguage");
context.getViewRoot().setLocale(countries.get(language));
}
在您看来(xhtml):
<p:commandLink value="#{msgs['home.french']}" id="frenchLink"
rendered="#{mainBean.changeLanguage.getLanguage() ne 'fr'}"
actionListener="#{mainBean.changeLanguage}" ajax="false"
oncomplete="javascript:location.reload(true)">
<f:param name="selectedLanguage" value="fr"/>
</p:commandLink>
<p:commandLink value="#{msgs['home.english']}" id="englishLink"
rendered="#{mainBean.changeLanguage.getLanguage() ne 'en'}" actionListener="#{mainBean.changeLanguage}" ajax="false"
oncomplete="javascript:location.reload(true)">
<f:param name="selectedLanguage" value="en"/>
</p:commandLink>