4

Da die Komplexität der Webprojekte, an denen ich arbeite, zunimmt, wird die Notwendigkeit, eine MVC-Struktur zu integrieren, immer dringender. Meine Modellklassen sind gut definiert, aber View- und Controller-Code tendieren dazu, miteinander verschmolzen zu werden. Ich habe auch ziemlich schweres AJAX auf der Seite benutzt (meistens RichFaces jsFunctions), was die Dinge etwas komplizierter macht.Best Practice für die Implementierung von MVC in JSF2-verwalteten Beans

Hat jemand gute Strategien zur Implementierung von MVC mit JSF2 gefunden? Ich möchte keinen weiteren Rahmen für das Projekt einführen (z. B. Spring MVC).

einige Ideen so weit, die ich

  • Für eine Seite mit schwerem Ajax tut noch nicht begonnen, eine Bohne ‚view‘ für ausgewählte Registerkarten erinnern, ausgewählte Elemente, gefiltert Listen von Daten bereitstellt, usw.
  • Eine "Controller" -Bohne haben, um Aktionen wie Änderungen an dem Modell zu behandeln
  • Haben Sie Befehl Bohnen, die zwischen der JSF-Seite und Controller gehen. Eine jsFunction füllt die Befehls-Bean mit Parametern, und der Aufruf von command.execute() bewirkt, dass die Befehls-Bean die richtige Methode auf der Controller-Bean aufruft, um die Aktion auszuführen. Die 'command'-Bean kann ein Javascript enthalten, das nach Beendigung aufgerufen wird. Es kann auch Bereiche der Seite angeben, die erneut gerendert werden sollen.

Irgendwelche Gedanken?

bearbeiten

Was ich ziemlich oft sehen Managed Beans, die alles zu tun, neigen: Auswahlen Spur von Benutzern halten, um das Modell aktualisieren, gefiltert Listen erhalten, etc ...

Wir verwenden JSF 1.2 im Moment und daher können wir keine Aktionen/Aktionslisten mit Parametern verwenden. So enthalten unsere verwalteten Beans beispielsweise Variablen wie m_selectedDate, deren einziger Zweck es ist, das ausgewählte Datum dem Back-End bei dem Aufruf an updateFilteredItemsBasedOnDate() zuzuführen. Es wäre schön, wenn die zusätzlichen Variablen verschwinden könnten, da sie nur vorübergehend sind. JSF 2's EL mit Parametern sollte helfen, aber ich bin gespannt, ob es eine alternative Lösung gibt.

Ich bin neugierig, ob es eine Möglichkeit gibt, MVC auf verwaltete Beans anzuwenden, oder eine Methode, Probleme zu trennen, so dass wir nicht mit großen Beans enden, die versuchen, alles zu tun.

+0

Ich sehe nicht den Punkt "Wie mache ich MVC mit JSF?". JSF selbst ist bereits ein MVC (2) Framework. Die verwalteten Beans sind das M, die Faceletseiten sind das V, das eingebaute 'FacesServlet' ist das C. Ist nicht deine Frage" Wie entwerfe ich die verwalteten Beans in JSF? ". – BalusC

+0

Guter Punkt. Ich habe den Titel der Frage aktualisiert und einige Kommentare hinzugefügt. –

+0

Irgendwelche anderen Gedanken? –

Antwort

0

Sie haben die besseren Weg für die Verwaltung der Bohnen sehen eher in schauen, wie man besser nutzen die MVC in JSF. Denn JSF selbst kommt mit der MVC in besserer Umsetzung. Ich bin nicht sicher, was genau Sie hier als den besseren Weg zur Implementierung der MVC meinen.

Wie Balusc in den Kommentaren sagte, JSF selbst hat die ausreichende MVC für Ihre Anwendung. Wenn Sie die Probleme trennen möchten, empfiehlt es sich, die Geschäftslogik in Helper-Klassen zu trennen und nur die Präsentationslogik in die Beans zu schreiben.

Es gibt eine Debatte darüber, ob die Bean für die Geschäftslogik verwendet werden soll oder ob sie von der verwalteten Bean getrennt werden soll. Das hängt alles von Ihrer Anwendung und Ihrer Domain ab.

Danke, Krishna

1

Na ja, vielleicht, was Sie brauchen, ist eine geschichtete Architektur. Bis jetzt eine MVC Architektur, gibt es mehr Sorgen. Zum Beispiel können Sie Ihre Architektur in den Schichten View, Business Logic und DataAccess schichten, indem Sie die meisten Commons-Designs und Unternehmensmuster in jeder Ebene implementieren.

Sie h've Whit einer von ihnen Implementierung MVC begonnen, aber, ist eine gute Praxis in count nehmen "Separation of Concerns"

Auf diese Weise können Sie eine gut organisierte und entkoppelt Code erreichen könnte.

Ich hoppe diese kurze Erklärung war nützlich.

Grüße.

Verwandte Themen