Я столкнулся с странным поведением локализации. В моем приложении два языка - английский и словацкий. На моем локальном коммутаторе Locfish работает отлично. Но одно и то же приложение, развернутое на Jelastic Glassfish, всегда на английском языке. Язык переключения не работает. Я отлаживал удаленное приложение и facecontext (FacesContext.getCurrentInstance(). GetViewRoot(). GetLocale() и FacesContext.getCurrentInstance(). GetExternalContext(). GetRequestLocale()) возвращает правильный языковой стандарт, но страница все еще находится на английском языке , В языковом меню выбрана словавка (2-й вариант)!JSF страница на кластерах Glassfish всегда на английском
Обе Glassfishes находятся в версии 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);
}
}
Спасибо за любую помощь
Michal