JSF:国际化的Resourcebundle问题

JSF:国际化的Resourcebundle问题,jsf,internationalization,jsf-2,Jsf,Internationalization,Jsf 2,我在教程中实现了国际化 当我更改应用程序中的语言时。它起作用了。但只有在下一个请求发生之前。然后将语言设置重置为我的标准语言-- 我在这里遗漏了什么: LanguageBean.java @ManagedBean(name="language") @SessionScoped public class LanguageBean implements Serializable{ private static final long serialVersionUID = 1L; p

我在教程中实现了国际化

当我更改应用程序中的语言时。它起作用了。但只有在下一个请求发生之前。然后将语言设置重置为我的标准语言--

我在这里遗漏了什么:

LanguageBean.java

@ManagedBean(name="language")
@SessionScoped
public class LanguageBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private String localeCode;

    private static Map<String,Object> countries;
    static{
        countries = new LinkedHashMap<String,Object>();
        countries.put("Deutsch", Locale.GERMAN); //label, value
        countries.put("English", Locale.ENGLISH); 

    }

    public Map<String, Object> getCountriesInMap() {
        return countries;
    }

    public String getLocaleCode() {
        return localeCode;
    }


    public void setLocaleCode(String localeCode) {
        this.localeCode = localeCode;
    }

    //value change event listener
    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());

              }
        }
    }

}
faces配置:

<application>
           <locale-config>
                <default-locale>de</default-locale>
           </locale-config>
       <resource-bundle>
        <base-name>org.dhbw.stg.wwi2008c.mopro.ui.text</base-name>
        <var>msg</var>
       </resource-bundle>
     </application>

判定元件
org.dhbw.stg.wwi2008c.mopro.ui.text
味精

将以下行添加到
setLocaleCode()


另请参见我编写的。

将以下行添加到
setLocaleCode()


另请参见我编写的教程。

您的教程非常好,而且更容易实现,但它对我不起作用:-(我的做法与你在教程中的做法完全相同。我无法向自己解释这一点,可能是因为你在旧教程中留下了一些噪音,或者你更改了示例包/类名,导致示例
BUNDLE\u NAME
常量无效。如果你按照教程进行操作而不做任何更改,那么它应该会起作用。你的tutorial非常好,而且更容易实现,但它对我不起作用:-(我的做法与你在教程中的做法完全相同。我无法向自己解释这一点,可能是因为你在旧教程中留下了一些噪音,或者你更改了示例包/类名,这导致示例
BUNDLE\u NAME
常量无效。如果你按照教程进行操作而不做任何更改,那么它应该可以工作。
<application>
           <locale-config>
                <default-locale>de</default-locale>
           </locale-config>
       <resource-bundle>
        <base-name>org.dhbw.stg.wwi2008c.mopro.ui.text</base-name>
        <var>msg</var>
       </resource-bundle>
     </application>
FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(localeCode));