Делать различия между различными видами управляемых бобов JSF

Я недавно прочитал эту статью Нила Гриффина Различия между разными видами управляемых бобов в JSF, и она заставила меня задуматься о различии между разными бобами в моем собственном приложении. Быстро подытожить суть:

  • Модель управляемых бобов: Этот тип управляемых бобов участвует в "Модельный" концерн MVC. Когда вы видите слово "Модель"... подумай о ДАННЫХ. Моделью JSF должна быть POJO, которая следующая шаблон дизайна JavaBean с геттерами/установками, инкапсулирующими свойства.

  • Поддержка управляемых: Этот тип управляемых бобов участвует в "Взгляд" относится к дизайнерскому шаблону MVC. Цель Поддержка заключается в поддержке логики пользовательского интерфейса, и имеет отношение 1::1 к вид JSF, или форма JSF в композиции Facelet. Хотя это обычно имеет свойства в стиле JavaBean, с которыми ассоциируется геттеры/установки, это свойства вида, а не базовая модель прикладных данных. Поддержка JSF также может иметь JSF Методы ActionListener и valueChangeListener.

  • Контроллер управляется: Этот тип управляемого бин участвует в "Контроллер", относящийся к конструктивному шаблону MVC. Цель боб контроллера заключается в выполнении некоторого рода бизнес-логики и возврате результат навигации к навигационному манипулятору JSF. JSF-контроллер-баны как правило, имеют методы действия JSF (а не методы ActionListener).

  • Поддержка управляется: Этот тип бобов "поддерживает" одно или несколько представлений. в концерне "Вид" конструкторского шаблона MVC. Типичный случай использования поставляет выпадающий список ArrayList в JSF h:selectOneMenu списки, которые появляются более чем в одном JSF представлении. Если данные в выпадающие списки предназначены специально для пользователя, тогда бобы будут сохранены в рамках сеанса.

  • Утилита, управляемая Бэном: Этот тип бобов обеспечивает некоторый тип "утилита" для одного или нескольких JSF-видов. Хороший пример этого может быть бобом FileUpload, который можно повторно использовать в нескольких сетях. приложения.

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

The AuthenticationController является примером контроллера, управляемого бейном. Он сканирует запросы и имеет два геттера и сеттера для установки имени пользователя и пароля, а также два метода навигации, аутентифицировать и выходить , перемещая пользователя либо в его личную область при успешном входе, либо обратно на главную страницу при выходе из системы.

UserBean UserBean является примером управляемой поддержки. Он охватывает сеанс и имеет экземпляр класса User (который будет нулевым, когда вы не аутентифицированы) с getter и setter, не более того.

AuthenticationController имеет этого пользователя в качестве управляемого свойства (@ManagedProperty(значение = "#{userController.user} private User user;). После успешной аутентификации, AuthenticationController установит управляемое свойство в качестве фактического пользователя с соответствующим именем пользователя, которое было использовано для входа.

Любые новые бобы также могли бы захватить пользователя в качестве управляемого свойства и извлечь необходимые ему данные, такие как членство в группе, например, если бы класс User имел список с именами групп.

Будет ли этот путь правильным в отношении разделения опасений?

45
задан BalusC 19 June 2013 в 19:05
поделиться