我正在使用 JSF 2、PrimeFacces 3.4 和 CDI。我有 2 页:page1.xhtml和page2.xhtml. 每个页面都有自己的托管 bean:Page1Bean和Page2Bean.
page1.xhtml有一个<p:remoteCommand>谁的actionListener显示器page2.xhtml。
page2.xhtml下包含 3 个组件<ui:include>和一个提交按钮。这 3 个组件中的每一个都绑定到不同的托管 bean Component1Bean,Component2Bean并且Component3Bean. 提交按钮显示page1.xhtml。
这三个ComponentXBeans 有一个@PostConstruct带有一些初始化代码的方法。我在这些 bean 上尝试了以下范围:
@SessionScoped:单次提交操作一切正常。当我重复它时,这些 bean 不会被重新初始化,@PostConstruct因为它们是会话范围的。@ViewScoped:@PostConstruct被多次调用。@ConversationScoped: 与 . 相同的行为@ViewScoped。
为什么@PostConstruct在视图和会话范围内多次调用?我怎样才能让他们每次提交操作只被调用一次?