初心者: JSF でロケールを切り替えるのを手伝ってください
こんにちは、誰かが助けてくれることを願っています。特に、Web サイトのロケールを en_GB から en_US に、en_US から en_GB に切り替える際に問題が発生していますが、他の 2 つの文字ロケールはすべて正常に切り替えられています。
faces_config.xml スニペット
<default-locale>en_gb</default-locale>
<supported-locale>en_us</supported-locale>
<supported-locale>en_gb</supported-locale>
<supported-locale>cy</supported-locale>
<supported-locale>es</supported-locale>
<supported-locale>fr</supported-locale>
ウェブページのスニペット
<f:view locale="#{localeBean.locale}">
<h:body>
<h:form>
<h:selectOneMenu value="#{localeBean.language}" onchange="submit()">
<f:selectItem itemValue="en_GB" itemLabel="English (British)" />
<f:selectItem itemValue="en_US" itemLabel="English (American)" />
<f:selectItem itemValue="cy" itemLabel="Cymraeg (British)" />
<f:selectItem itemValue="es" itemLabel="Español (España)" />
<f:selectItem itemValue="fr" itemLabel="Français (France)" />
</h:selectOneMenu>
</h:form>
</h:body
</f:view>
ジャワビーン
public class LocaleBean {
private Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
public Locale getLocale() {
return locale;
}
public String getLanguage() {
return locale.getLanguage();
}
public void setLanguage(String language) {
if ( language.equals("en_GB") ) {
locale = new Locale("en","GB");
}
else if ( language.equals("en_US") ) {
locale = new Locale("en","US");
}
else {
locale = new Locale(language);
}
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
}
私の問題は、ロケールを en_US または en_GB に変更すると、selectItem のデフォルトが en_GB itemLablel になるため、最初に fr、es、または cy のいずれかを選択しない限り、en_US または en_GB ロケールを選択できないことです。
どんな助けでも大歓迎