La raison pour laquelle il n'est pas toujours évident de savoir quelles parties de JSF et de nombreux autres frameworks web correspondent à quelles parties de MVC, est que le modèle MVC a été conçu à l'origine pour les applications de bureau.
Dans une application de bureau, les nœuds M, V et C forment un graphe à connexion maximale, ce qui signifie que chaque partie peut communiquer avec toutes les autres parties. Par exemple, si le modèle change, il peut transmettre ce changement à la vue. Ceci est particulièrement visible dans le cas où il y a plusieurs représentations de la vue dans une application de bureau. Modifiez-en une et voyez les autres se mettre à jour en temps réel.
En raison de la nature client/serveur et demande/réponse des applications web, le MVC classique ne correspond pas à la plupart des frameworks web.
Plus précisément, dans JSF, le mappage est le suivant :
-
Modèle - Les services/DAO ainsi que les entités qu'ils produisent et consomment. Le point d'entrée est le bean géré, mais dans Java EE (dont JSF fait partie), ces artefacts sont généralement mis en œuvre par EJB et JPA respectivement.
-
Voir - Les composants de l'interface utilisateur et leur composition en une page complète. Ceci est entièrement dans le domaine de JSF et implémenté par JSF
UIComponent
et Facelets respectivement.
-
Contrôleur - L'agent de circulation qui traite les commandes et les données entrantes de l'utilisateur, les achemine vers les bonnes parties et sélectionne une vue à afficher. Dans JSF, on n'écrit pas ce contrôleur, mais il est déjà fourni par le framework (c'est la fonction
FacesServlet
).
En particulier, la dernière partie n'est souvent pas bien comprise : dans JSF, vous n'implémentez pas de contrôleur. Par conséquent, un backing bean ou tout autre type de bean géré est un contrôleur. PAS le contrôleur.
La première partie (le modèle) n'est pas toujours bien comprise non plus. La logique métier peut être implémentée par EJB et JPA, mais du point de vue de JSF, tout ce qui est référencé par une liaison de valeur est le modèle. C'est d'ailleurs de là que vient le nom de l'une des phases du cycle de vie de JSF : Update Model
. Dans cette phase, JSF pousse les données des composants de l'interface utilisateur vers le modèle. En ce sens, les managed beans (JSF) sont donc le modèle.
Bien que JSF lui-même ne définisse pas explicitement le concept, il existe une utilisation spécifique et souvent récurrente des managed beans appelée le haricot de soutien .
Pour JSF, un backing bean est toujours le modèle, mais en pratique, c'est un élément de plomberie qui se trouve au milieu du modèle, de la vue et du contrôleur. Parce qu'il effectue certaines tâches qui peuvent être considérées comme des tâches de contrôleur, il est souvent confondu avec le contrôleur. Mais, comme expliqué précédemment, ce n'est pas correct. Il peut également effectuer certaines tâches de modèle et, occasionnellement, de la logique de vue.
Voir aussi :