Managed-Beans и Scopes - как с этим справиться? - PullRequest
0 голосов
/ 13 марта 2011

Я хочу сделать что-то вроде этого: index.xhtml -> createPerson.xhtml -> addAddress.xhtml -> index.xhtml.

В Managed-Bean CreatePerson будет создан новый объект Person,заполнено и сохранено, в Адресе Адреса Управляемых Бобов мне нужен Персональный Объект, чтобы добавить адрес этому человеку, и после этого он должен вернуться к начальной точке.Я думаю, что Managed-Bean CreatePerson должен быть @SessionScoped, потому что я должен внедрить Person-Object в AddAdress (здесь @ViewScoped).

Я хочу иметь цикл или, скорее, возможность создать больше, чемодин человек, но как я могу это сделать, если у меня есть SessionScoped-Bean, который живет дольше, чем мне нужно?Есть ли команда или аннотация, чтобы уничтожить его?Как вы справляетесь с такими рабочими процессами, связанными с областями действия?

Я знаю о MyFaces Orchestra с диалоговой областью, но я буду, если возможно, делать это только с Eclipse / Tomcat (7.0.11) / Mojarra (2.0)0,3).

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Используйте одно представление и используйте атрибут rendered, чтобы показать / скрыть включенные представления с "подчиненными формами" в зависимости друг от друга. Таким образом, вы можете пойти с @ViewScoped бобом.

В качестве альтернативы просто сохраните Person в БД после создания и передайте его id в качестве параметра запроса следующему представлению и дайте ему снова загрузиться из БД.

0 голосов
/ 13 марта 2011

Если вы хотите (или можете) использовать Tomcat и Mojarra, тогда оба решения, упомянутые BalusC, работают отлично, хотя с ограничениями, которые вы должны сохранять на одной странице, или повторять запросы между переходами по страницам.Ваш вариант использования - именно то, для чего предназначен conversation scope в Java EE 6 (через CDI).Вы также можете добавить это в Tomcat через справочную реализацию Weld.

При использовании метода BalusC, описанного для того, чтобы оставаться на одной странице, чтобы у пользователя было небольшое впечатление от работы с отдельными страницами, это может бытьопция для отображения визуализированных частей страницы с помощью «диалогов» (плавающие, css, ...).Если вы можете использовать стороннюю библиотеку компонентов, вы можете добавить RichFaces или PrimeFaces, которые содержат готовые к использованию компоненты диалога.

...