У меня есть вопрос, который больше связан с дизайном и архитектурой. Я родом из классического MVC-опыта и должен запачкать руки на JSF2. Я читаю статьи IBM о JSF2 (http://www.ibm.com/developerworks/library/j-jsf1/) и думаю, что понимаю общую концепцию.
Я начал связываться с JSF2 через ROO. У меня такое ощущение, что ROO (возможно, это верно для любого приложения типа JSF2, а может и нет) очень странно / нечетко использует бины. В общем, мне действительно не ясно, какова реальная роль Боба! Например, если у меня есть представление с формой, предназначенной для редактирования одной пользовательской записи, я инициализирую пользователя в a, давайте назовем его UserBean (возможно, сохранить в переменной-члене) и получить доступ к этой переменной через геттеры. Если я теперь хочу просмотреть всех пользователей, я бы снова отобразил представление в UserBean, содержащее коллекцию пользователей, и снова получил бы доступ к этой коллекции через геттеры. Предыдущее описание на самом деле так, как я бы делал вещи с JSF. Это означает, что я бы использовал UserBean больше как statefull-сервис в качестве контроллера.
В типичной ситуации с контроллером я бы создал для каждого типа действия (перечисление пользователя, редактирование пользователя, просмотр пользователя и т. Д.) Отдельный контроллер с конкретными инициализированными данными, и таким образом я бы отделил контекст логики от контроллеров.
Я часто пользуюсь услугами, специфичными для контекста, например, если я часто обращаюсь к пользователю и распространяю его по приложению, я создаю пользовательский сервис, который обрабатывает специфичную для пользователя логику, которую, возможно, сложно поместить в саму себя. Если бы я сейчас, например, посмотрел на сгенерированные Roo Beans, я бы нашел методы, которые программно отображают формы, поля ввода, метки, которые снова хранят списки пользователей, логические поля, которые указывают, были ли данные уже загружены, однопользовательские элементы и множество методы, которые больше похожи на то, чтобы быть помещенными в UserService (или что-то еще). Мне интересно, так ли это предназначено для использования JSF2, на словах: помещать в bean все, что связано с одним контекстом, не использовать сервис и писать «суперконтроллерные компоненты», которые обрабатывают все?
Я действительно не знаю, правильно ли вы поняли вопрос, но что может мне помочь, это намек на
- очень примерный и заслуживающий одобрения пример приложения, которое использует bean-компоненты таким образом, как они были предназначены для использования в сочетании с функциями и сценариями jsf2, которые, например, реализуют базовые сценарии использования CRUD вокруг объекта данного типа. (Один большой запутанный момент заключается в том, что в моем случае ROO всегда использует AJAX и javascript, такие как Modal-Dialogs, для реализации логики CRUD. Интересно, есть ли в JSF более классический способ для этого? [С 'classic' я например, для представлений на основе URL и отдельных представлений для просмотра, редактирования и просмотра объектов])
- ресурс, который просвещает типичные JSF-паттерны "все, что надо, ребята, сделай это" (может быть, это J2EE-паттерны?).
Большое вам спасибо!
Пожалуйста, не стесняйтесь подтолкнуть меня к конкретизации конкретных моментов, если я не уверен!