Ответ 1
Это очень субъективный вопрос. Я лично не согласен с этой статьей и считаю, что она дает очень плохие советы начинающим.
Model Managed- Bean: этот тип управляемого bean участвует в проблеме "Модель" шаблона проектирования MVC. Когда вы видите слово "модель" - подумайте DATA. Модель JSF - bean должна быть POJO, которая следует за шаблоном проектирования JavaBean с инкапсулирующими свойствами getters/setters.
Я бы не стал или называл это управляемым bean. Просто сделайте это свойство @ManagedBean
. Например, DTO или JPA @Entity
.
Backing Managed- Bean: этот тип управляемого bean участвует в заботе "Вид" шаблона проектирования MVC. Цель поддержки bean заключается в поддержке логики пользовательского интерфейса и имеет отношение 1:: 1 с представлением JSF или форму JSF в композиции Facelet. Хотя он, как правило, обладает свойствами стиля JavaBean со связанными getters/seters, это свойства представления, а не модели данных базового приложения. Поддержка JSF- beans может также иметь методы JSF actionListener и valueChangeListener.
Таким образом, вы сохраняете дублирование и сопоставление свойств объекта в управляемом bean. Для меня это не имеет смысла. Как сказано, просто сделайте объект свойством управляемого bean и пусть поля ввода ссылаются на него как #{authenticator.user.name}
вместо #{authenticator.username}
.
Управляемый управляемый Bean: этот тип управляемого bean участвует в заботе "Контроллер" шаблона проектирования MVC. Назначение контроллера bean заключается в выполнении какой-либо бизнес-логики и возвращении результата навигации в навигатор JSF. JSF-контроллер beans обычно имеет методы действия JSF (а не методы actionListener).
Это описывает класс @RequestScoped
/@ViewScoped
@ManagedBean
. Доступны ли методы прослушивателя событий или нет, зависит от того, являются ли они конкретными для представления, которое привязано к bean и/или для их работы, зависящей от состояния bean. Если они есть, то они принадлежат bean. Если нет, то они должны быть автономной реализацией любого FacesListener
интерфейса, но определенно не управляемого bean.
Support Managed- Bean: Этот тип bean "поддерживает" одно или несколько видов в представлении "Вид" шаблона проектирования MVC. Типичным примером использования является предоставление списков ArrayList для JSF h: selectOneMenu, которые отображаются в более чем одном представлении JSF. Если данные в раскрывающихся списках относятся к пользователю, то bean будет храниться в области сеанса.
Fine. Для данных с широким охватом приложений, таких как выпадающие списки, просто используйте @ApplicationScoped
bean, а для данных с широким диапазоном сеансов, таких как вход в систему, и его предпочтения просто используйте @SessionScoped
.
Utility Managed- Bean: Этот тип bean предоставляет некоторую функцию "полезности" для одного или нескольких представлений JSF. Хорошим примером этого может быть FileUpload bean, который может быть повторно использован в нескольких веб-приложениях.
Это не имеет для меня никакого смысла. Резервное копирование beans обычно привязывается к отдельным представлениям. Это слишком похоже на ActionListener
, которая должна использоваться <f:actionListener>
в компонентах команд по вашему выбору. Определенно не управляемый bean.
Примеры запуска правильного подхода см. также: