为什么在回发调用期间调用JSF postAddToView事件侦听器方法?
我在下面的组件中添加了postAddtoView事件侦听器。我在等那场比赛 在创建初始视图期间,将调用orderView.populateForm侦听器方法一次( ). 对于恢复视图的任何回发调用,我不希望视图中添加新的组件实例。因此,不会发生火灾事件 但是,每次回发调用都会调用事件侦听器方法为什么在回发调用期间调用JSF postAddToView事件侦听器方法?,jsf,Jsf,我在下面的组件中添加了postAddtoView事件侦听器。我在等那场比赛 在创建初始视图期间,将调用orderView.populateForm侦听器方法一次( ). 对于恢复视图的任何回发调用,我不希望视图中添加新的组件实例。因此,不会发生火灾事件 但是,每次回发调用都会调用事件侦听器方法 <h:form id="orderForm"> <p:panelGrid id="attributePanel" columns="#{orderView.
<h:form id="orderForm">
<p:panelGrid id="attributePanel" columns="#{orderView.numberOfGridColumns}">
<f:event type="postAddToView" listener="#{orderView.populateForm}" />
</p:panelGrid>
<p:commandButton ajax="true" value="Create" process="@form" update="@form"/>
</h:form>
OrderView是一个视图范围的CDIBean。据我所知,视图范围的bean存储在部分视图状态中,并且默认情况下启用了部分视图状态保存。(BalusC在这里对这个问题给出了很好的解释)为了看到它的效果,我禁用/启用了部分状态保存。这没有帮助
提前谢谢。
PS:我正在运行Mojarra 2.2.12/Glassfish 4.1以下哪一项对理解和回答您的问题最有帮助?就这点而言,组件实例根本不存储在视图状态中。我认为这非常有用。即使是回发调用,我也不知道“将生成JSF组件树”。不知何故,我了解到视图状态也保留了组件树结构。(显然,这种理解是错误的)。另一方面,JSF2.0规范说()如果是回发调用,并且阶段是restoreView,则不调用事件侦听器方法。这是否意味着介于2.1和2.2之间。版本事件框架中有更改?显然回发在渲染响应期间创建了一个新视图(例如导航)。回发是一个ajax调用,不会导航到另一个视图。新视图是在restoreView阶段创建的。这就是我困惑的问题。我没想到还会有另一个事件被解雇。在创建过程中会调用同一视图范围的bean。在理解和回答您的问题时,哪一个最有帮助?就这点而言,组件实例根本不存储在视图状态中。我认为这非常有用。即使是回发调用,我也不知道“将生成JSF组件树”。不知何故,我了解到视图状态也保留了组件树结构。(显然,这种理解是错误的)。另一方面,JSF2.0规范说()如果是回发调用,并且阶段是restoreView,则不调用事件侦听器方法。这是否意味着介于2.1和2.2之间。版本事件框架中有更改?显然回发在渲染响应期间创建了一个新视图(例如导航)。回发是一个ajax调用,不会导航到另一个视图。新视图是在restoreView阶段创建的。这就是让我困惑的地方。我没想到会有另一件事被炒鱿鱼。在创建过程中,调用相同的视图范围bean。