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