Spring Web Flow

Schritte zum eigenen ersten Flow

Die wichtigsten Konzepte von Spring Web Flow werden nachfolgend an einem kleinen Beispiel demonstriert und erläutert. Das Beispiel soll eine simple Login-Maske sein, die nach erfolgreichem Login abhängig von einer Checkbox eine Seite für Benutzer oder eine Seite für Administratoren anzeigen soll. Der erste Schritt für die Anwendung ist die Definition der FlowRegistry (Listing 1), die durch den mitgelieferten XML Namespace definiert wird.

Listing 1

Nach der Definition der FlowRegistry steht nun noch die Integration in ein Webframework auf dem Plan. Es existieren z.B. Integrationsmöglichkeiten für Struts der ersten Generation [3], Spring MVC und Java Server Faces (JSF). In diesem einfachen Beispiel soll Spring MVC als zu Grunde liegendes Webframework verwendet werden. Die Konfiguration ist in Listing 2 aufgeführt. Im Wesentlichen wird dabei zum einen ein FlowController integriert, um Flows in Spring Web Flow zu starten. Zum anderen wird Spring MVC von Spring Web Flow genutzt, um Views – in diesem Fall JavaServer Pages – anzuzeigen. Dazu ist ein ViewResolver notwendig.

Listing 2

Die einzelnen Flows werden in XML-Dateien konfiguriert. Ein einfacher Flow ist in Listing 3 dargestellt. Den Anfang eines Flows bildet immer der Startzustand (start-state).

Listing 3

Der Startzustand verweist auf einen view-state. Über das Attribut view wird eine Seite angesprochen. Durch Spring MVC wird dadurch automatisch (durch den definierten view-resolver) auf die Seite login.jsp verwiesen. Erwähnenswert zu dem Flow in Listing 3 ist sicherlich der decision-state. Hierdurch wird auf die dem Flow zu Grunde liegende Modellklasse zugegriffen und abhängig vom Zustand der Variable admin wird eine Verzweigung auf einen bestimmten Zustand gemacht. Am Ende des Flows wird ein Import auf die Datei login-flow-beans.xml gemacht, wodurch Springbeans definiert werden, die nur für diesen Flow gelten. Die Definition dazu ist in Listing 4 aufgeführt.

Listing 4

Wie in Listing 4 zu sehen, kann für ein Formobjekt auch ein Validator definiert werden. Der Validator ist eine Implementierung des bereits vom Springframework bekannten org.springframework.validator.Validator. Damit das Formobjekt mit dem Flow verbunden wird, muss zu Anfang die Methode setupForm aufgerufen werden. Dies wird in Listing 3 innerhalb der entry-actions des Zustands enterLoginData realisiert. Erwähnenswert zu Listing 4 ist noch die Klasse org.springframework.webflow.action.FormAction. Diese Basisklasse ermöglicht das Databinding und die Validierung.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.