Вопрос

Я пытаюсь перейти к следующему состоянию веб -потока, используя запросы Ajax. Но он остается в том же состоянии и возвращает GSP в качестве ответа для этого состояния, пока я ожидаю GSP для следующего состояния.

Ниже приведен код веб -потока:

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")
            }
        }
}

Ниже приведен Ajax Call, который я делаю для перехода штата:

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

GSP для каждого состояния (Flow1, Flow2, Flow3) содержит фрагмент кода AA, имеющий удаленные и требуемые дальше, и пропустите кнопки отправки для перехода в следующее состояние, и в результате обновляют «Wizarddiv» div. Ниже приведен фрагмент GSP для состояния Flow1:

<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>
Это было полезно?

Решение

Помимо отслеживания выполнения (как опубликовал Daxon), вам нужно убедиться, что ваши кнопки названы _EVENTID_NEXT и _EVENTID_SKIP. G: Sepobutton обычно достаточно умна, чтобы сделать это для вас, но это может быть не внутри удаленной формы.

Кроме того, мой код веб -потока использует выполнение параметров, а не FlowExecutionKey - какая версия Grails вы используете?

Другие советы

Я застрял на той же проблеме, почти понял это,

Что вам нужно сделать, это отправить обратно веб -поток Grails "_flowExecutionKey", который отслеживает текущее состояние,

Я уверен, что вы видели это, как это единственный приличный результат, Google находит.

Я отправляю запрос Ajax на действие, которое заполняет шаблон и отправляет его обратно в входной тег,

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

Но вы можете попробовать отправить храм обратно, отмеченный как JSON с «_flowExecutionKey» вместе с данными, которые вы хотите отправить, обратно,

Это мои два цента

Здесь решение, которое работает в Grails 2.5.3, по крайней мере, для одного действия. Идентификатор и имя кнопки автоматически изменяются, чтобы включить »Eventid«В качестве префикса, но это все еще не сработало для меня, если я не добавил _event_id вручную в качестве параметра ввода. Однако я не уверен, как это может работать для нескольких возможных событий.

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top