ローカリゼーションの奇妙な動作に直面しています。アプリには英語とスロバキア語の 2 つの言語があります。私のローカル Glassfish では、ロケールの切り替えが完全に機能します。しかし、Jelastic Glassfish にデプロイされた同じアプリケーションは常に英語です。ロケールの切り替えが機能しません。リモートアプリをデバッグし、facescontext (FacesContext.getCurrentInstance().getViewRoot().getLocale() および FacesContext.getCurrentInstance().getExternalContext().getRequestLocale()) は正しい sk ロケールを返しますが、ページはまだ英語です. 言語メニューではスロバキア語 (第 2 オプション) が選択されています!
両方の Glassfish はバージョン 3.1.2.2 であり、Mojarra 2.2.7 および Primefaces 5.0 があり、JDK7 で実行されます。ローカル GF は Win7 で実行され、リモートは Linux (CentOS?) で実行され、クラスター化されています (これが理由でしょうか?)
顔-conf.xml
<locale-config>
<default-locale>en</default-locale>
<supported-locale>sk</supported-locale>
</locale-config>
<resource-bundle>
<base-name>Bundle</base-name>
<var>bundle</var>
</resource-bundle>
login.xhtml
<f:view locale="#{loginBean.locale}">
...
<p:outputLabel value="#{bundle.language}: "/>
<p:selectOneMenu value="#{loginBean.language}" id="loginLocale">
<f:selectItem itemValue="en" itemLabel="English" />
<f:selectItem itemValue="sk" itemLabel="Slovensky" />
<p:ajax update="@all"/>
</p:selectOneMenu>
...
</f:view>
LoginBean.java
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable{
private Locale locale = FacesContext.getCurrentInstance().getExternalContext().getRequestLocale();
...
public Locale getLocale() {
return locale;
}
public String getLanguage() {
return locale.getLanguage();
}
public void setLanguage(String language) {
locale = new Locale(language);
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);
}
}
助けてくれてありがとう
ミハル