如何解决JSF 2.0通过浏览器以编程方式设置整个会话的语言环境
创建一个会话范围的托管bean,如下所示:
@ManagedBean
@SessionScoped
public class LocaleManager {
private Locale locale;
@PostConstruct
public void init() {
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);
}
}
要设置视图的当前语言环境,请将其绑定到<f:view>
主模板的。
<f:view locale="#{localeManager.locale}">
要对其进行更改,请将其绑定到<h:selectOneMenu>
带有语言选项的。
<h:form>
<h:selectOneMenu value="#{localeManager.language}" onchange="submit()">
<f:selectItem itemValue="en" itemLabel="English" />
<f:selectItem itemValue="nl" itemLabel="Nederlands" />
<f:selectItem itemValue="es" itemLabel="Español" />
</h:selectOneMenu>
</h:form>
要改善您的国际化页面的SEO(否则它将被标记为重复内容),请同时绑定语言<html>
。
<html lang="#{localeManager.language}">
解决方法
如何根据初始浏览器请求检测应用程序的语言环境,并在整个浏览会话中使用它,直到用户专门更改语言环境,以及如何在其余会话中强制使用此新语言环境?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。