JSF是否应该在Ajax重新渲染时处理非渲染组件?

时间:2013-07-12 07:52:21

标签: jsf

我的页面具有Ajax显示/隐藏功能。 在初始页面加载期间,不会调用非呈现的<f:subview><h:panelGroup>内的bean方法。当使用Ajax重新呈现@form时,虽然没有呈现相关的子视图,但我的bean方法被调用。这应该发生什么? (我使用的是JSF 2.2)

1 个答案:

答案 0 :(得分:0)

根据我上面的评论,这是预期的行为。不幸的是,它带来了一些丑陋的行为。

如果您在使用列表时正在执行任何操作,则在第一次请求时它将正常工作。即使您采取了预防措施,也可以通过加载f:event来加载这些内容,这将无法保存您以下的AJAX请求。

实施例: 如果对每个为请求范围管理的bean使用JPA,并且该bean具有未呈现的惰性集合,则会导致以下情况:

请求1:不会触及非渲染组件,即懒惰集合不会初始化

请求2(Ajax):JSF将尝试恢复调用未加载的延迟集合的完整视图,从而导致异常。