我正在尝试使用Ajax请求转换到WebFlow的下一个状态。但是,当我期待GSP进入下一个状态时,它保持在同一状态并返回GSP作为该状态的响应。带Ajax的Grails WebFlow
以下是一个Webflow代码:
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调用我正在为国家过渡:
$.ajax({
type: "POST",
url: "/UN/user/gettingStartedAjax",
success: function(data) {
$("#wizardDiv").html(data);
}
});
每个状态的GSP(流1,流2,FLOW3)包含接下来需要具有remoteForm &的代码片段,并跳过提交按钮以转换到下一个状态,并因此更新“wizardDiv”div。以下是流1状态GSP片段:
<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>
那么,你能给我一个你的Gsp的例子吗? Ajax调用和处理响应,因为您必须打印Ajax调用中的链接,并且可以进一步解释您的“参数执行” – Daxon 2010-01-13 13:11:35
主要技巧是照顾按钮。没有必要捕获flowExecutionKey,因为Grails已经将其作为执行隐藏输入变量提供。但是,在发布ajax和序列化表单数据时,必须发送正确的按钮名称,例如如果点击下一步然后在发布数据中发送_eventId_next。 – kaychaks 2010-01-13 16:00:15
@kaychaks - 所以你对我说,我所要做的就是使用正确的URL。 ajax POST/GET中的“_eventid_next”,那就是它? 因此,我不必关心我通过提交和更多的ajax请求发送了什么“?execution = e1s1”? – Daxon 2010-01-13 21:35:33