这不是正常现象。如果
binding在启用部分状态保存的情况下将标记处理程序属性或JSF组件的属性绑定到视图作用域的bean
的属性,则会发生这种情况。这称为问题1492,已在即将发布的Mojarra
2.2中修复。
通常,您可以通过缺少
rendered属性来识别标签处理程序。例如
<c:if>,
<f:validator>,
<ui:include>等,如果你绑定这样的标记处理到视图的属性属性作用域bean像如下
<c:if test="#{viewScopedBean.something}"></c:if><h:inputText><f:validator binding="#{viewScopedBean.validate}" /></h:inputText><ui:include src="#{viewScopedBean.includePage}" />那么每当要从部分保存的状态恢复视图时,都会重新创建视图作用域的bean。这是视图范围的鸡蛋问题,因为为了获得 正确的
视图范围的bean,必须从还原的视图中提取它。
如果您在
bindingJSF组件的属性中引用视图作用域bean的属性,也会发生这种情况。
<h:someComponent binding="#{viewScopedBean.someComponent}" />也可以看看:
- JSF 2.0中的通信-
@ViewScoped
标记处理程序中失败



