Ответ 1
Это зависит от точки зрения (pun intented).
В большой архитектурной картине ваш собственный JSF-код - V:
M - Бизнес-домен/Уровень обслуживания (например, EJB/JPA/DAO)
V - Ваш код JSF
C - FacesServlet
В изображении разработчика архитектурный V в свою очередь делится следующим образом:
M - Объект
V - Лицевые стороны/страница JSP
C - управляемый bean
В маленьком клиентском изображении разработчик V в свою очередь делится следующим образом:
M - дерево компонентов JSF
V - Полученный вывод HTML
C - Клиент (веб-браузер)
В еще меньшем изображении JavaScript клиент V в свою очередь делится следующим образом:
M - дерево HTML DOM
V - Визуальная презентация
C - функции прослушивателя событий (взаимодействие с конечным пользователем и Ajax)
Итак, это в основном M (M (M (MVC) C) C) C;)
Обратите внимание, что некоторые стартеры и даже некоторые из них - очень простые — tutorials mingle/copy/flatten свойства сущности в управляемом bean, что фактически сделало бы контроллер моделью. Излишне говорить, что это плохой дизайн (т.е. Не простой дизайн MVC).
Фрагменты кода в следующих ответах иллюстрируют правильный подход MVC:
- JSF-контроллер, служба и DAO
- Создание страниц главной страницы для сущностей, как их связать и какую область bean выбрать
- Передача управляемого jSF2 pojo bean в EJB или помещение того, что требуется в объект передачи
- Фильтр не инициализирует EntityManager
- javax.persistence.TransactionRequiredException в малом приложении facelet