当前位置: 首页 > 面试题库 >

JSF 2.0通过浏览器以编程方式设置整个会话的语言环境。

郤坚诚
2023-03-14
问题内容

如何根据初始浏览器请求检测应用程序的语言环境,并在整个浏览会话中使用它,直到用户专门更改语言环境,以及如何在其余会话中强制使用此新语言环境?


问题答案:

创建一个会话范围的托管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}">


 类似资料:
  • 问题内容: 是否可以从httpsession对象(javax.servlet.http.HttpSession)派生首选语言?可以从servletrequest中获取它,但我没有。感谢您的任何想法。斯文 问题答案: 用户的首选语言环境可以用作请求标头(“接受语言”)。它由用户的浏览器根据其首选项自动填充。然后,您可以将此信息存储在用户的会话中,并在以后适当时检索它。

  • 问题内容: 我正在寻找一种以编程方式清空浏览器缓存的方法。我这样做是因为应用程序缓存了机密数据,当您按“注销”时,我想删除这些数据。这将通过服务器或JavaScript发生。当然,仍然不鼓励在外国/公共计算机上使用该软件,因为还有诸如键盘记录器之类的更多危险,您无法在软件级别上克服这些危险。 问题答案: 有可能,您可以简单地使用jQuery用事件处理程序/按钮替换引用缓存状态的“元标记”,然后进行

  • 问题内容: 是否可以以编程方式在android中接听电话? 我找到了一些不可能的地方,但随后安装了应用https://play.google.com/store/apps/details?id=com.a0softus.autoanswer可以 正常工作。 我已经搜索了很多并尝试了很多方法,而且呼叫拒绝功能正常,但呼叫应答功能却无效。 我尝试了以下代码进行电话应答,如下所示: 函数拒绝调用可以正常

  • 问题内容: 我正在尝试使用带有spring-data-mongodb的自定义转换器。我想以编程方式创建它,但是出现以下错误: 以下是失败的代码段: 这是我的转换器类: 我要坚持的课程看起来像这样: 问题答案: 这个答案对OP来说可能有点晚了,但是我今天遇到了同样的问题并找到了解决方案… 要以编程方式进行设置,您需要先调用才能使用它。通过阅读的代码,我意识到了这一点。 这是一个例子:

  • 问题内容: 尝试实施ajax登录/注册过程(不带身份验证的刷新站点)。使用Cookie来保存状态。我以为我现在就拥有此功能,但是由于某种原因,浏览器在从服务器取回cookie后仍未设置cookie。有人可以帮忙吗?这是请求和响应头: 请求标题 响应标题 我还在服务器返回的Chrome网络工具中看到了cookie: 响应Cookie 问题答案: 必须通过将“ withCredentials”设置设置

  • 有没有办法以编程方式自定义这些TextInputLayout属性: textColorHint 彩色口音 颜色控制正常 颜色控制已激活 文本选择句柄 我知道如何使用主题属性对它们进行样式化,但是我正在处理的项目动态地加载颜色信息,据我所知,在运行时无法更改主题/样式值。