2016-04-12 10 views
1

Von the wiki page über JSF Ich habe gelernt, dass es als ein MVP-Framework betrachtet wird. Aber ich kann nicht wirklich verstehen warum.Warum JSF als MVP, aber nicht als MVVM-Framework betrachtet wird

Actully, Bohnen enthalten keinen Verweis auf View in sich. Es gibt auch einen Daten-Bidinig-Mechanismus zwischen Facelets und Managed Beans.

Also ich würde sagen, dass Managed Beans sind mehr als ViewModelPresenter, wie Presenter in der Regel eine View Schnittstelle an sich wie in that example enthalten.

FRAGE: Warum Rahmen aber nicht MVVM JSF als MVP?

Antwort

1

MVVM ist hauptsächlich ein Desktop-anwendungsorientiertes Muster. Wenn MVVM in der Webanwendungsperspektive betrachtet wird, gibt es auf der Clientseite einen Controller. JSF hat keine solche. Wenn Sie immer noch über Webanwendungen sprechen, wenn Sie z. Spring MVC auf Serverseite mit z.B. AngularJS oder Node.js auf der Client-Seite, können Sie über MVVM sprechen.

+0

_hier wäre ein Controller in der Client-Seite_ Nicht ganz klar, warum das. In [der MVVM-Wikipedia-Beschreibung] (https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) gibt es keine klaren Einschränkungen, wo ViewModel (Client oder Server für Web-Anwendungen) sein sollte Sein. Und noch etwas. Was ist der Moderator in JSF dann? Verwaltete Beans könnten in verschiedenen Facelets verwendet werden ... Ich würde sie nicht als Moderatoren bezeichnen. –

+0

Die Ansichtstechnologie ist der Moderator. Zuvor war dies "schwer" auf JSP eingestellt. Seit JSF 1.2 erlaubt die API die Definition eines anderen Präsentators über 'ViewHandler'. Dies wird später auf ['ViewDeclarationLanguage'] (http://docs.oracle.com/javaee/7/api/javax/faces/view/ViewDeclarationLanguage.html) (VDL) abgestimmt, wodurch sich grundsätzlich von MVC zu MVP bewegt wird. XML-basierte Presenter wurden erfunden, unter anderem Facelets, die seit JSF 2.0 zum Standard-Presenter wurden. Es gibt sogar (experimentelle) reine Java-basierte Moderatoren. Sie können mehrere auf Google mit dem Keyword [JavaVDL] (http://google.com/search?q=javavdl) finden. – BalusC