J'essaie de passer à l'état suivant d'un WebFlow en utilisant des requêtes Ajax. Mais il reste dans le même état et renvoie le GSP en réponse à cet état alors que j'attends le GSP pour l'état suivant.Grailles WebFlow avec Ajax
Voici le code de 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")
}
}
}
Ce qui suit est l'appel Ajax que je fais pour la transition de l'État:
$.ajax({
type: "POST",
url: "/UN/user/gettingStartedAjax",
success: function(data) {
$("#wizardDiv").html(data);
}
});
Les GSP pour chaque état (flow1, Flow2, flow3) contient Un fragment de code ayant remoteForm & requis et sauter les boutons de soumission pour passer à l'état suivant et mettre à jour la div "wizardDiv". Voici le fragment SPG pour l'état 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>
Alors, pourriez-vous me donner un exemple de votre Gsp? L'appel Ajax et la gestion de la réponse, Comme vous devez imprimer le lien dans l'appel Ajax, et pourriez-vous expliquer votre "exécution de paramètre" – Daxon
L'astuce principale est de prendre soin des boutons. Il n'est pas nécessaire d'attraper flowExecutionKey car Grails le fournit déjà en tant que variable d'entrée cachée d'exécution. Mais lors de la publication de l'ajax, avec des données de formulaire sérialisées, il est indispensable d'envoyer le bon nom de bouton, par exemple. si vous cliquez sur Suivant, envoyez _eventId_next dans les données de publication. – kaychaks
@kaychaks - Donc, vous me dites que tout ce que j'ai à faire est d'avoir l'URL correcte avec, par exemple, "_eventid_next" dans l'ajax POST/GET, et c'est ça? Donc je n'ai pas à me soucier de ce que "? Execution = e1s1" j'envoie avec les soumissions et plus de demandes ajax? – Daxon