Dans le framework JSF MVC, qui est Model, View et Controller?
Cela dépend du point de vue (jeu de mots).
Dans la grande image architecturale, votre propre code JSF est le [~ # ~] v [~ # ~] :
[~ # ~] m [~ # ~] - Domaine métier/couche de service (par exemple EJB/JPA/DAO)
[~ # ~] v [~ # ~] - Votre code JSF
[~ # ~] c [~ # ~] - FacesServlet
Dans l'image du développeur, l'architecture [~ # ~] v [~ # ~] est à son tour divisible comme ci-dessous:
[~ # ~] m [~ # ~] - Entité
[~ # ~] v [~ # ~] - Page Facelets/JSP
[~ # ~] c [~ # ~] - Bean géré
Dans l'image client plus petite, le développeur [~ # ~] v [~ # ~] est à son tour divisible comme ci-dessous:
[~ # ~] m [~ # ~] - Arborescence des composants JSF
[~ # ~] v [~ # ~] - Sortie HTML rendue
[~ # ~] c [~ # ~] - Client (navigateur Web)
Dans l'image JavaScript encore plus petite, le client [~ # ~] v [~ # ~] est à son tour divisible comme ci-dessous:
[~ # ~] m [~ # ~] - Arborescence DOM HTML
[~ # ~] v [~ # ~] - Présentation visuelle
[~ # ~] c [~ # ~] - Fonctions d'écoute d'événements (interaction avec l'utilisateur final et Ajax)
Il s'agit donc essentiellement d'un M (M (M (MVC) C) C) C;)
Notez que certains démarreurs et même certains tutoriels —très basiques— mêlent/copient/aplatissent les propriétés de l'entité dans le bean géré, ce qui ferait du contrôleur un modèle. Inutile de dire que c'est une mauvaise conception (c'est-à-dire pas une conception MVC propre).
Les extraits de code dans les réponses suivantes illustrent la bonne approche MVC:
Dans le livre The Definitive Guide to JSF in Java EE 8 , in chapter 8 "Backing beans", page 276, le diagramme Venn ci-dessous est utilisé pour illustrer la position du bean de sauvegarde dans le paradigme MVC dans le contexte pertinent pour le développeur JSF. Avis de non-responsabilité: le livre est écrit par moi et l'image est créée par moi.
M odel serait votre ManagedBean
V iew serait jsp
, XHTML
(eh bien, vous pouvez accueillir différentes vues ici)
C ontroller sera FacesServlet
Mettre à jour, j'espère que cette image aide plus
Le servlet faces gère le cycle de vie des faces. En ce sens, c'est le contrôleur combiné à votre propre code qui peut être appelé pendant chaque phase du cycle de vie