Я использую JSF 2, PrimeFacces 3.4 и CDI. У меня есть 2 страницы: page1.xhtml
и page2.xhtml
. Каждая страница имеет свой собственный управляемый компонент: Page1Bean
и Page2Bean
.
page1.xhtml
имеет <p:remoteCommand>
, actionListener
которого отображает page2.xhtml
.
page2.xhtml
содержит 3 компонента под <ui:include>
и одну кнопку отправки. Каждый из этих трех компонентов привязан к разным управляемым компонентам Component1Bean
, Component2Bean
и Component3Bean
. Кнопка отправки показывает page1.xhtml
.
Эти три ComponentXBean
имеют метод @PostConstruct
с некоторым кодом инициализации. Я попробовал следующие области действия на этих бобах:
@SessionScoped
: все работает нормально для одной операции отправки. Когда я повторяю это, эти bean-компоненты не инициализируются повторно с помощью@PostConstruct
, потому что они относятся к сеансу.@ViewScoped
:@PostConstruct
вызывается несколько раз.@ConversationScoped
: то же поведение, что и@ViewScoped
.
Почему @PostConstruct
вызывается несколько раз в области просмотра и диалога? Как я могу позволить им вызываться только один раз за операцию отправки?
binding
для привязки этих компонентов к bean-компонентам. Это правда? И вы используете версию Mojarra старше 2.1.18? Тогда это полностью объясняет причину вашей проблемы с областью просмотра. - person BalusC   schedule 24.08.2013