Ich habe ein grundlegendes Flussdiagrammbeispiel:
%Vor%index.xhtml hat eine einfache Form, die den Ablauf mit einem Parameter eingibt:
%Vor%flow1.xhtml zeigt den Parameter an und lässt Sie einen Wert in den Flussbereich eingeben:
%Vor%flow1-flow.xml definiert den Rückgabe-Knoten einfach als "returnFromFlow1" und setzt ihn auf /index.xhtml.
Das scheint zu funktionieren. Ich möchte post-redirect-get bei der Eingabe des Datenflusses implementieren, damit die Adressleiste des Browsers mit der Ansicht synchron bleibt. Also habe ich natürlich versucht action="flow1? Faces-redirect = true". Diese Änderung verhindert, dass der Ablauf ausgeführt wird. Beim Klicken auf die Schaltfläche wird index.xhtml einfach erneut geladen.
Dann habe ich versucht action="flow1 / flow1.xhtml? faces-redirect = true". Das lädt die Seite und umgeleitet wie erwartet, aber der Ablauf wird nicht initialisiert. Wenn ich das Formular im Flow übergebe, erhalte ich einen Fehler, weil flowScope auf null auflöst.
Bei ein wenig Recherche habe ich einen Tipp gefunden, um die "to-flow-document-id" zu setzen, damit sie den Fluss initialisiert. Also habe ich meinen commandbutton hinzugefügt. Keine Änderung.
Irgendwelche Ideen, wie Sie das erreichen können?
Nun, wenn ich die JSF-2.2-Gesichter lese config schema korrekt, sollten Sie in der Lage sein, eine <redirect/>
-Direktive in einer faces-config.xml anzugeben. Mit den folgenden Schritten sollten Sie eine Umleitung erreichen:
Wenn nur die Adressleiste des Browsers mit der Ansicht synchronisiert werden soll, können Sie einfach <h:button
anstelle von <h:commandButton
verwenden. Dies funktioniert, weil <h:button
Javascript verwendet, um eine HTTP-GET-Anforderung zum Starten und Navigieren zum Fluss zu generieren. Die ID des Flusses muss als Wert des Attributs outcome
angegeben werden:
index.xhtml:
%Vor%Wenn die Anforderung besteht, dass einige Überprüfungen durchgeführt werden müssen, bevor die Berechtigung zum Starten des Nachrichtenflusses erteilt wird, müssen Sie wie folgt manuell initialisieren und zum Nachrichtenfluss navigieren:
index.xhtml:
%Vor%flow1.xhtml:
%Vor%BackingBean:
%Vor% Bitte beachten Sie, dass der Parameter in diesem Fall nicht zum Button hinzugefügt werden kann, sondern stattdessen zum Flow Scope hinzugefügt werden muss!
Beachten Sie auch, dass die Umleitung zum Fluss von NavigationHandler#handleNavigation()
anstelle von ExternalContext#redirect()
weil der Ablaufbereich sonst beendet wird!
Tags und Links jsf post-redirect-get jsf-2.2 faces-flow