我正在使用JSF 2,PrimeFacces 3.4和CDI。我有2頁:page1.xhtml
和page2.xhtml
。每個頁面都有自己的管理bean:Page1Bean
和Page2Bean
。作用域和@PostConstruct
page1.xhtml
有一個<p:remoteCommand>
其actionListener
顯示page2.xhtml
。
page2.xhtml
包含<ui:include>
下的3個組件和一個提交按鈕。這3個組件中的每一個都綁定到不同的託管bean Component1Bean
,Component2Bean
和Component3Bean
。提交按鈕顯示page1.xhtml
。
這三個ComponentXBean
s有一個@PostConstruct
方法與一些初始化代碼。我嘗試了以下豆類的範圍:
@SessionScoped
:一切工作正常單提交操作。當我重複它時,那些bean不會被@PostConstruct
重新初始化,因爲它們是會話範圍的。@ViewScoped
:@PostConstruct
被多次調用。@ConversationScoped
:與@ViewScoped
相同的行爲。
爲什麼@PostConstruct
在視圖和會話範圍中多次調用?我怎麼能讓他們每次提交操作只被調用一次?
當我清理公式並改進了問題的格式後,我開始相信你正在使用'binding'屬性將這些組件綁定到bean。這是真的?而且你正在使用比2.1.18更早的Mojarra版本?然後,以視圖範圍完全解釋您的問題的原因。 – BalusC