Які компоненти є MVC в рамках JSF MVC?


Відповіді:


150

Це залежить від точки зору (каламбур).

У великій архітектурній картині ваш власний код JSF - це V :

M - Домен бізнесу та рівень обслуговування (наприклад, EJB / JPA / DAO)
V - Ваш код JSF
C - FacesServlet

На зображенні розробника архітектурна V у свою чергу ділиться, як показано нижче:

M - Суб'єкт
V - Фасети / JSP сторінка
C - Керована квасоля

На меншій картині клієнта розробник V у свою чергу ділиться, як показано нижче:

M - Дерево компонентів JSF
V - Виведений HTML вихід
C - Клієнт (веб-браузер)

На ще меншому зображенні JavaScript клієнт V у свою чергу ділиться, як показано нижче:

M - дерево DOM HTML
V - Візуальна презентація
C - Функції слухача подій (взаємодія ендусера та Ajax)

Таким чином, це в основному M (M (M (MVC) C) C) C;)

Зауважте, що деякі пускачі та навіть деякі - усі основні - навчальні посібники змішуються / копіюють / вирівнюють властивості об'єкта в керованому бобі, що ефективно робить контролер моделлю. Зайве говорити, що це погана конструкція (тобто не чиста конструкція MVC).

Фрагменти коду в наступних відповідях ілюструють правильний підхід MVC:

У книзі " Поточний посібник з JSF в Java EE 8" , в главі 8 "Збір бобів", сторінка 276, наведена нижче діаграма Венна використовується для ілюстрації положення підкладки в парадигмі MVC у контексті, що стосується розробника JSF. . Відмова від авторських прав: книга написана мною, а зображення створено мною.

введіть тут опис зображення


+1 Цілком погоджуються з обома філософіями, як правило, це більше справа з великою аркою. перегляд проектів у режимі реального часу.
Джигар Джоші

2
не отримав каламбур, все ще маю нагоду
Нік Русслер

@JeffLee в моїй роботі ми бачимо це як керовані боби контролюють перегляд xhtml. Керовані боби можуть поговорити з модельним кодом, щоб отримати та зберегти об'єкти залежно від того, що потрібно для перегляду.
djeikyb

5
@Jeff: це лише в тому випадку, якщо ви змішуєте властивості моделі в ньому. Як і в, використовуючи <h:inputText value="#{register.username}">замість <h:inputText value="#{register.user.name}">.
BalusC

Повністю згоден з цією відповіддю на шкоду одній з @ Jigar. ІМО, керована квасоля набагато більше, ніж модель. Вони є своєрідним розширенням FacesServlet, де відбувається вся взаємодія. Також вони здатні утримувати стан, але набагато більше С, а не М.
Xtreme Biker

36

М одель був би твоїмManagedBean

V iew jsp, XHTML(добре, тут ви можете розмістити різні погляди)

C ontroller будеFacesServlet

Оновіть, сподіваюсь, ця картинка допомагає більше

введіть тут опис зображення


4
+1, має сенс, хоча, можливо, я можу сказати, що ваша модель - це сутності (якщо у вас є такі), а контролер - керовані боби (крім FacesServlet)
Шервін Асгарі

@ Джигар добре, якщо FacesServletце контролер, ніж я не можу його розширити. У мене немає власних контролерів ... Я погодився би з Шервіном, що керовані боби є контролером. Шервін, як щодо публікації власної альтернативної відповіді?
yegor256

1
це під прикриттям, FacesServletяке контролює.
Jigar Joshi

У вікіпедії @Jigar сказано, що "Контролер приймає дані від користувача та інструктує модель та вікно перегляду виконувати дії, засновані на цьому введенні". Сумніваюсь, що FacesServlet "вказує модель", чи не так?
yegor256

4
Undercover FacesServlet отримує всі дані (на верхньому шарі його називають bean) з запиту, сеансу, контексту програми та обробляє їх.
Jigar Joshi

4

Сервлет обличчя керує життєвим циклом обличчя, тому в цьому сенсі контролер у поєднанні з власним кодом може викликатись протягом кожної фази життєвого циклу

http://www.java-samples.com/images/jsf-lifecycle.gif


-1

Обличчя сервера Java - це веб-структура MVC, де компоненти MVC наступні,

  1. Модель - це керований клас бобів, позначений за допомогою @ManagedBean, який має властивості зберігати дані та відповідні геттери та сетери. Керований клас квасолі також може містити ділову логіку. Вони також відомі як резервна квасоля, яка може мати різні сфери застосування, як запит, сесія, застосування.

  2. Перегляд - Інтерфейс користувача, показаний клієнтові, тобто файли .xhtml. Він отримує дані від керованої квасолі і подається як відповідь.

  3. Контролер - javax.servlet.webapp.FacesServlet - це централізований клас контролера, який в основному є сервлетом. Будь-який запит, що надходить до JSF, спочатку надходить до контролера FacesServlet. На відміну від JSP, в якому ми пишемо власний клас контролера, у JSF сервлет контролера є фіксованою частиною фреймворку, і ми не пишемо його.

MVC -

введіть тут опис зображення


Це ідентично 36-ти питанням, яким було схвалено. Якщо ви вважаєте, що цю відповідь можна зробити більш зрозумілою, будь ласка, відредагуйте її
Kukeltje

@Kukeltje Я вважаю, що моя відповідь має більше пояснень, а не називання компонентів MVC.
Гетал Рах

Дуже трохи пояснення ... 1: не дуже, оскільки "містить дані" - це не найкраща річ (повинна бути в юридичних осіб), бізнес-бізнес, не найкраща річ, оскільки вони повинні бути в сервісах (див. Додаткові посилання в найбільш схваленій відповіді ), 2: не набагато більше 3: трохи більше тексту, але відсутнє зображення іншої відповіді, що робить більш зрозумілим, ніж текст, який ви додали ...
Kukeltje

@Kukeltje Спасибі, але я лише початківець JSF.
Геталь Рах

Нема проблем. Я використовую його вже давно з великим успіхом. Отримайте свої руки на книзі java ee 8 та jsf Бауке Шольца та Арджана Тхімса. Чудово читати та навчальний посібник, але також читати всі> 25 схвалених запитань / запитань у Stackoverflow пам'ятайте про їх існування та починайте з jsf 2.3 та
Kukeltje
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.