Ich habe einen Aktionszustand, der einen Ausdruck auswertet und dann je nach Ergebnis in verschiedene andere Zustände übergeht. Einer der Ergebniszustände ist ein Subflow-State, der die Kontrolle an einen anderen Flow übergibt, Beispiel;Spring Webflow: Wie übergebe ich ein Attribut während eines Übergangs von einem Flow zu einem anderen?
<action-state id="doWork">
<evaluate expression="someAction.doWork(someInput)" />
<transition on="WORKSUCCESS" to="workSuccess" />
<transition on="WORKFAIL" to="fixFail" />
</action-state>
<subflow-state id="fixFail" subflow="someOtherPlace/someOtherWorkToFixFail">
<input name="someNumber" value="1" type="java.lang.Integer" />
<transition on="finish" to="workSuccess" />
</subflow-state>
Wie man sehen kann ich einen Eingang in die Subflow über den Input-Tag passieren kann, aber meine Frage ist, wie kann ich zusätzliche Eingänge angeben und übergeben, die ich anwesend wollen, wenn und nur wenn der Subflow-Zustand aufgerufen wird vom Übergang WORKFAIL? Angenommen, der Subflow-Status "fixFail" kann von anderen Aktionszuständen aufgerufen werden.
Ich habe Dinge ähnlich wie folgt ohne Wirkung versucht;
<action-state id="doWork">
<evaluate expression="someAction.doWork(someInput)" />
<transition on="WORKSUCCESS" to="workSuccess" />
<transition on="WORKFAIL" to="fixFail">
<attribute name="newInput" value="3000" type="java.lang.Integer" />
</transition>
</action-state>
<subflow-state id="fixFail" subflow="someOtherPlace/someOtherWorkToFixFail">
<input name="someNumber" value="1" type="java.lang.Integer" />
<input name="someNumber2" value="flowScope.newInput" type="java.lang.Integer" />
<transition on="finish" to="workSuccess" />
</subflow-state>
Hmmm der conversationScope klingt wie das, was ich in diesem Fall möchte ich denke. Ich stimme zu, dass die Sitzung das ist, was ich möchte, wenn der Benutzer diese Abläufe wiederholt, sobald sie das erste Mal beendet haben und alle Sitzungsattribute bleiben würden, nicht wahr? Wo würden Conversation-Scoped-Attribute verschwinden, wenn der Hauptfluss beendet ist und nicht vorhanden wäre, wenn der Benutzer den Hauptfluss ein zweites Mal eingeben würde, richtig? Gibt es eine Möglichkeit, dem conversationScope im Übergang on = "WORKFAIL" hinzuzufügen? Ich würde es gerne in der xml/jsps behalten, anstatt den Java-Code der Aktion hinzuzufügen. –
@Nick Foote - werfen Sie einen Blick auf meine Bearbeitung, um Ihre Frage zu beantworten –
Prost, die ein Leckerbissen funktioniert, so offensichtlich, wenn Sie es sehen, ich versuchte alle möglichen Dinge wie $ {conventionScope.someVariable} in der JSP! –