我正在使用 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
。
这三个ComponentXBean
s 有一个@PostConstruct
带有一些初始化代码的方法。我在这些 bean 上尝试了以下范围:
@SessionScoped
:单次提交操作一切正常。当我重复它时,这些 bean 不会被重新初始化,@PostConstruct
因为它们是会话范围的。@ViewScoped
:@PostConstruct
被多次调用。@ConversationScoped
: 与 . 相同的行为@ViewScoped
。
为什么@PostConstruct
在视图和会话范围内多次调用?我怎样才能让他们每次提交操作只被调用一次?