Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF重置语言环境_Java_Jsf 2_Internationalization_Locale - Fatal编程技术网

Java JSF重置语言环境

Java JSF重置语言环境,java,jsf-2,internationalization,locale,Java,Jsf 2,Internationalization,Locale,这段代码完全简化了,但重现了我的问题: BackingBean.java test.xhtml 如果要更改区域设置,然后调用reload方法两次,则区域设置将重置为默认值en。localereset的原因是什么?此外,只有在转发到其他页面时才会发生这种情况,如果您将reload方法更改为void,则区域设置仍然是fr public void reload(){ System.out.println(FacesContext.getCurrentInstance()

这段代码完全简化了,但重现了我的问题:

BackingBean.java test.xhtml
如果要更改区域设置,然后调用
reload
方法两次,则区域设置将重置为默认值
en
locale
reset的原因是什么?此外,只有在转发到其他页面时才会发生这种情况,如果您将
reload
方法更改为
void
,则区域设置仍然是
fr

public void reload(){
    System.out.println(FacesContext.getCurrentInstance()
            .getViewRoot().getLocale());
}
输出:
但在2次转发后,区域设置将更改回
en
,会话范围中不会记住视图区域设置。它在视图范围中被记住(见鬼,视图本身代表整个视图范围!)

如果需要记住会话范围中的区域设置,那么需要创建一个会话范围的托管bean,并将其作为主模板的
中的属性引用


另见:

    • 会话范围中不记得视图区域设置。它在视图范围中被记住(见鬼,视图本身代表整个视图范围!)

      如果需要记住会话范围中的区域设置,那么需要创建一个会话范围的托管bean,并将其作为主模板的
      中的属性引用

      
      
      另见:
      <h:form>
          <h:commandLink action="#{backingBean.reload}" value="reload page"/>
      </h:form>
      <h:form>
         <h:commandLink action="#{backingBean.setLocale}" value="change locale"/>
      </h:form>
      
      en
      locale changed!
      fr_FR
      en
      
      public void reload(){
          System.out.println(FacesContext.getCurrentInstance()
                  .getViewRoot().getLocale());
      }
      
      en
      locale changed!
      fr_FR
      fr_FR