Frage

Ich versuche mit AJAX -Anfragen zum nächsten Status eines Webflows zu wechseln. Aber es bleibt im selben Zustand und gibt die GSP als Antwort für diesen Zustand zurück, während ich den GSP für den nächsten Staat erwarte.

Im Folgenden finden Sie den Webflow -Code:

def gettingStartedAjaxFlow = {      
        flow1 {
            on("next") {                
                println "flow1"
            }.to("flow2")
            on("skip").to("flow2")
        }

        flow2 {
            on("next") {
                println "flow2"
            }.to("flow3")
            on("skip").to("flow3")
        }

        flow3 {         
            on("next"){             
                println "flow3"
            }.to("finish")
            on("skip").to("finish")

            finish {
                redirect(action:"index")
            }
        }
}

Im Folgenden finden Sie den Ajax -Anruf, den ich für den Zustandsübergang mache:

$.ajax({
            type: "POST",
            url: "/UN/user/gettingStartedAjax",
            success: function(data) {
                $("#wizardDiv").html(data);
            }
});

Die GSPs für jeden Zustand (Flow1, Flow2, Flow3) enthält ein AA -Code -Fragment mit Remoteform & erforderlich, um als nächstes und überspringen Schaltflächen zu überspringen, um in den nächsten Status zu wechseln und als Ergebnis die "WizardDiv" -Div zu aktualisieren. Im Folgenden finden Sie das GSP -Fragment für Flow1 -Zustand:

<g:formRemote name="flow1Form" url="[controller:'user', action:'gettingStartedAjax']" update="wizardDiv">
    <p>You are in flow 1</p>
    <g:submitButton name="next" value="Next Flow" />
    <g:submitButton name="skip" value="Skip Flow" />    
</g:formRemote>
War es hilfreich?

Lösung

Sie müssen nicht nur die Ausführung verfolgen (wie mit Daxon veröffentlicht) sicherstellen, dass Ihre Schaltflächen _eventid_next und _eventid_skip bezeichnet werden. G: SubmitButton ist normalerweise klug genug, um dies für Sie zu tun, aber es ist möglicherweise nicht in einer Remoteform.

Außerdem verwendet mein Web -Flow -Code die Parameterausführung und nicht die FlowexecutionKey - welche Version von Grails verwenden Sie?

Andere Tipps

Ich stecke an dem gleichen Problem fest, habe es fast herausgefunden,

Was Sie tun müssen, ist, den Grails -Webflow "_flowexecutionKey" zurückzusenden, der den aktuellen Status im Auge behält.

Ich bin sicher, Sie haben gesehen Dies, wie es das einzige anständige Ergebnis ist, findet Google.

Ich sende eine AJAX -Anfrage an eine Aktion, die eine Vorlage bevölkert und sie mit einem Eingabetag zurücksendet.

 <input id="flowExecutionKey" name="_flowExecutionKey" value="${request.flowExecutionKey}" size="100"/>

Sie könnten jedoch versuchen, einen Tempel zurück zu senden, der wie JSON mit dem "_flowexecutionkey" zusammen mit den Daten, die Sie zurücksenden möchten, markiert werden.

Das sind meine zwei Cent

Hier eine Lösung, die zumindest für eine einzige Aktion in Grails 2.5.3 funktioniert. Die ID und der Name der Schaltfläche werden automatisch so geändert, dass sie einbezogen werden. "EventId"Als Präfix, aber dies hat für mich immer noch nicht funktioniert, es sei denn, ich habe _event_id manuell als Eingabeparameter hinzugefügt. Ich bin mir jedoch nicht sicher, wie dies für mehrere mögliche Ereignisse funktionieren kann.

<g:formRemote name="flow1Form" url="[controller:'user', action:'gettingStartedAjax']" update="wizardDiv">

<input type="hidden" id="execution" name="execution" value="${request.flowExecutionKey}"/>
<input type="hidden" id="_eventId" name="_eventId" value="next"/>

<fieldset class="form">
</fieldset>

<fieldset class="buttons">
    <g:submitButton name="next" value="Next flow"/>
</fieldset>

</g:formRemote>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top