Java JSF重置语言环境
这段代码完全简化了,但重现了我的问题: BackingBean.java test.xhtmlJava 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()
如果要更改区域设置,然后调用
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