JSF CDI: область разговора bean [s] лучшая практика

В настоящее время я изучаю JSF 2.0, и я так рад за существование этой возможности области разговора, что очень полезно при открытии новой вкладки или в новом окне на той же странице и наличии отдельных ресурсов, а не переопределении друг друга.

Но им любопытно, как правильно это реализовать, когда начинать разговор и когда его закрывать.

В моем случае у меня есть каждый CDI bean для каждой страницы JSF. И позвольте сказать, что у меня есть меню, и когда он щелкнет, это приведет к странице A, а от A может привести к B, B может привести к тому, что C, C может привести к D, все эти 4 страницы связаны в одном цепь.

Доступ к свойствам A bean из B или C или D beans возможен, доступ к свойствам B также возможен из C или D beans и т.д.

Теперь я очень смущен:

  • должны ли все эти A B C D в области разговора или нет, или возможно, просто A? Потому что я думаю иногда с другой страницы, которая вне цепи ABCD, как страница F, он может перейти на страницу B, хотя я не знаю, как поставить данные еще до bean B.
  • должны ли все эти A B C D объединены в один bean
  • где и когда начинать разговор, я думаю о конструктор, но я не думаю, что это хорошая идея, потому что я предпочитаю разговор при первом доступе страницы, а не bean
  • где и когда остановить разговор, чтобы не было неиспользуемые ресурсы, зависающие вокруг.

Поделитесь своими мыслями по этому поводу.

Ответ 1

JSF 2 предоставляет области запроса, просмотра, сеанса и приложений. CDI вводит область разговора, но что более важно, она вводит стандарт, по которому новые возможности могут быть добавлены на платформу.

Сфера действия, которую вы описываете, вероятно, лучше подходит для пользовательской области, такой как область окна. Два проекта, реализующих эту область:

Тем не менее, я бы посоветовал вам переосмыслить структуру bean. Я очень увлекся областью представления в сочетании с параметрами представления JSF 2 для распространения информации с одной страницы на другую (и из одного экземпляра области обзора в другой).

Область "Просмотр доступа" MyFaces выглядит как еще один опрятный подход, где bean остается в области видимости, пока страницы, которые вы перемещаете, сохраняют ссылку на эту область.