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.
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
Guter Punkt. Ich habe den Titel der Frage aktualisiert und einige Kommentare hinzugefügt. –
Irgendwelche anderen Gedanken? –