0
4

1 回答 1

-1

在你的 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>
于 2013-05-13T12:22:10.733 回答