代码之家  ›  专栏  ›  技术社区  ›  Aravind Yarram

JSF应用程序中的动态区域设置切换?

  •  4
  • Aravind Yarram  · 技术社区  · 14 年前

    另外,请告诉我是否有更好的处理方法

    public Locale calculateLocale(FacesContext facescontext)
    {
        Locale userLocale = LocaleManager.getInstance().getCurrentLocale();
        if (userLocale != null)
        {
            return userLocale;
        }
        else
        {
            return delegate.calculateLocale(facescontext);
        }
    }
    
    public void renderView(FacesContext facescontext, UIViewRoot uiviewroot)
            throws IOException, FacesException {
        uiviewroot.setLocale(LocaleManager.getInstance().getCurrentLocale());
        delegate.renderView(facescontext, uiviewroot);
    }
    public UIViewRoot createView(FacesContext facescontext, String s)
    {
        UIViewRoot view = delegate.createView(facescontext, s);
        view.setLocale(LocaleManager.getInstance().getCurrentLocale());
        return view;
    }
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   Bozho    14 年前

    我的解决方案是:

    • 有一个会话范围内的托管bean,其中包含 Locale
    • 为每种支持的语言提供以下按钮(或链接):

      <h:commandButton action="#{localeBean.changeLocal}">
           <f:setPropertyActionListener target="#{localeBean.selectedLanguage}" 
                    value="en" />
      </h:commandButton>
      
    • 根据传递的语言设置当前区域设置( new Locale(lang)

    • <f:view locale="#{localeBean.currentLocale}">
    推荐文章