0

我一直在尝试使用选择框动态更改我的 JSF 应用程序的语言环境。但是,仅当我更改 faces-config.xml 中的设置时,区域设置才会更改。帮我解决这个..enter code here

<application>
           <locale-config>
                <default-locale>en</default-locale>
           </locale-config>
       <resource-bundle>
        <base-name>com.messages.messages_en</base-name>
        <var>msg</var>
       </resource-bundle>
     </application>

我的价值改变听众是,

public void countryLocaleCodeChanged(ValueChangeEvent e){
        String newLocaleValue = e.getNewValue().toString();

        //loop country map to compare the locale code
                for (Map.Entry<String, Object> entry : countries.entrySet()) {

               if(entry.getValue().toString().equals(newLocaleValue)){

                FacesContext.getCurrentInstance()
                    .getViewRoot().setLocale((Locale)entry.getValue());

              }
               }
4

1 回答 1

0

我发现了错误。问题在于 faces-config.xml 文件中的设置。正确的设置如下..

<application>
           <locale-config>
            <supported-locale>en</supported-locale>                 
           <supported-locale>fr</supported-locale>
           </locale-config>
       <resource-bundle>
        <base-name>com.messages.messages</base-name>

        <var>msg</var>

       </resource-bundle>
     </application>

在上面的代码中,base-name 是属性文件的位置。在我的示例中,包名称是 com.messages,属性文件是消息。在这里,我采用了英语和法语两种语言环境。我选择的默认语言环境是 English(en)。根据用户选择的语言环境,它选择messages_en.properties 或messages_fr.properties。

于 2013-11-06T05:17:06.153 回答