preRenderComponent多次调用@PostConstruct

时间:2015-06-01 17:18:07

标签: jsf jsf-2

我正在使用会话范围的托管bean进行页面处理。 在页面上我有一个preRenderComponent:

<f:metadata> 
        <f:event listener="#{pageBean.init}" type="preRenderComponent"></f:event>
</f:metadata>

此页面是模板客户端,与其他一些页面共享模板。该模板包含一个侧面导航栏,其中包含指向每个模板客户端页面的链接。

页面bean:

@Named
@Default
@SessionScoped
public class pageBean  implements Serializable {
 @PostConstruct
 public void init(){
   System.out.println("Page Bean init.");
   //call methods that populate data on the page
 }

}

问题出现如下:

  1. 如果我使用preRenderComponent删除页面上的行,则在访问页面时仍会调用pageBean init()方法。

  2. 如果我保留上述行,则会在访问时调用init()方法,但每当我单击侧面导航栏并访问使用相同模板的另一个页面时,也会调用它

  3. 我提到了这个问题:CDI bean constructor and @PostConstruct called multiple times 并确保我没有将JSF与CDI混合,但这个问题仍然存在。虽然我似乎可以通过简单地删除preRenderComponent行来解决这个问题,但我真的希望了解这里发生了什么,并找出一种方法来避免将来发生。

    非常感谢任何信息。

0 个答案:

没有答案