2015-08-28 8 views
0

У меня есть приложение JSF с RichTaces 4.5.8, deltaspike для CDI beans и EJB, которое работает в EAP 6.3. У меня есть страница с двумя таблицами и несколькими popupPanels. Страница подкрепляется контроллером компонентов CDI в WindowScope. К настоящему времени страница становится больше и больше, потому что popupPanels имеет множество элементов управления и действий.Split CDI bean in windowscope для разделения проблем

Страница xhtml разделена составными компонентами и ui: include, который отлично работает, но бит CDI становится больше. Я хотел бы переместить методы действия popupPanels в другие CDI-компоненты, но для меня звучит странно, что на одной странице есть несколько оконных дисков CDI. Что бы вы сделали, чтобы разделить большой CDI-компонент?

С наилучшими пожеланиями

+0

Что такое "* WindowScoped CDI beans *"? – Tiny

+0

@WindowScoped beans by deltaspike, см. Https://deltaspike.apache.org/documentation/jsf.html –

+0

Нет такой проблемы с таким разделом. Window-Scoped просто означает, что экземпляры ограничены определенным окном. Поэтому вы можете иметь любое количество таких экземпляров. Вы можете сравнить его с «сеансом за окно». Поэтому просто используйте/разделите свою логику так, как вы делали бы это с помощью фаз секций с сессией. Цель состоит не в том, чтобы иметь один экземпляр на странице или даже больше страниц. Создание контроллера на странице - один из многих возможных подходов. –

ответ

1

@ комментарий DarWhi является правильным - вы можете использовать столько бобов WindosScoped на странице, как вы хотите, все они будут жить только с одним окном. Нет ограничений, что вы должны использовать только один компонент на странице JSF. Вам просто нужно указать имя, используя @Named для всех таких компонентов.

Если вы предпочитаете иметь только один компонент WindowScoped для каждого окна, вы все равно можете разделить свою логику на несколько компонентов. Просто вставьте все дочерние компоненты в компонент WindowScoped, а затем укажите действия в дочерних бобах с использованием точечной нотации: #{viewScopedBean.childBean.action. Вы можете использовать переменные для хранения ссылок на childBeans и сделать код в JSF короче, см. Это answer.

+0

Спасибо, я проверю. –

 Смежные вопросы

  • Нет связанных вопросов^_^