Widersprüchliche Erklärungen von MVC in JSF

Ich würde anfangen, JSF zu lernen, aber zuerst möchte ich das große Ganze als MVC-Framework verstehen.

Es gibt mehrere Antworten mit vielen positiven Stimmen, die erklären, was MVC-Schichten in JSF sind, aber sie widersprechen sich normalerweise.

BalusC's Antwort:Welche Komponenten sind MVC im JSF-MVC-Framework?

In der großen Architektur ist Ihr eigener JSF-Code dasV:

M - Geschäftsdomäne / Serviceschicht (z. B. EJB / JPA / DAO)
V - Ihr JSF-Code
C - FacesServlet

uf dem Entwicklerbild ist das architektonischeV ist wiederum wie folgt teilbar:

M - Entitä
V - Facelets / JSP-Seite
C - Managed Bean

Jigar Joshi Antwort im gleichen Thread:

M odel wäre deinManagedBean

V iew wärejsp,XHTML (naja du kannst hier verschiedene Ansichten unterbringen)

C ontroller wirdFacesServlet

Hie, eine andere Sicht auf das Problem:

In JSF implementieren Sie keinen Controller. Folglich ist eine Backing-Bean oder eine andere Art von Managed-BeanNICH Der Controller

Noch ein andere, diesmal nicht von Stackoverflow:

In JSF ist der Master-Controller immer das FacesServlet. Sub-Controller sind in die verschiedenen Steuerelement-Tag-Implementierungen integriert. Sie schreiben fast nie Controller-Code in JSF, weil alles im Lieferumfang enthalten ist. Sie müssen also nur die View-Vorlagen (xhtml) und die Models (Backing Beans) angeben.

Viele Leute denken, dass die Aktionslogik in Backing Beans sie zu Controllern macht. Das ist falsch. Ein Controller ist eine Komponente, deren einziger Lebenszweck darin besteht, das Modell und die Ansicht zu synchronisieren. In JSF wird diese Aufgabe vom FacesServlet und den Steuerelementen ausgeführt. Möglicherweise führen Validatoren und Konverter Zusatzfunktionen aus, die eigentliche Synchronisation (Aktualisierung) ist jedoch Teil des JSF-Kerns.

Ich weiß, dass MVC viele Varianten hat, je nachdem, ob es sich um eine Desktop-Anwendung, eine Webanwendung usw. handelt. Daher ist es schwierig, MVC zu definieren (versuchen Sie, zwei Quellen mit identischen Erklärungen für MVC zu finden).

Ich beschäftige mich hier hauptsächlich mit Managed Beans. Sind sie M oder C? Verwaltete Beans werden anscheinend verwendet, um Daten aus der Modellebene (der Modellebene auf der höchsten Abstraktionsebene - großes architektonisches Bild wie in BalusCs Antwort, dh EJB, JPA und DAO) abzurufen und das von der Ansicht zu verwendende Ergebnis zu speichern. Die Controller-Ebene in MVC ist für die Verarbeitung von Befehlen aus der Ansicht, die Kommunikation mit der Modellebene und das Abrufen von Daten aus der Modellebene verantwortlich. Wird Managed Bean für die Kommunikation mit der Model-Ebene verwendet? Ja, und es stellt auch die abgerufenen Daten für die Ansicht zur Verfügung. Für mich gehört es zum Controller-Layer, nicht zu einem Modell, da es keine Logik zum Abrufen der Daten oder der Daten selbst enthält, sondern nur die entsprechenden Modell-Layer-Methoden aufruft (siehe BalusC's Codebeispiel).

Also, was ist die Quelle meiner Verwirrung? Könnte jemand dies ein für alle Mal erklären, so dass es für Anfänger in JSF klar ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage