Question

Je vais avoir des problèmes pour obtenir un travail de bouton retour du navigateur correctement sur les flux web. Version de Grails est 1.1.2. Imaginez un exemple de code:

def someFlow = {
   ...
   fillGroup {
      on("addMember"){
         ...
      }.to "fillMember"
   }
   fillMember {
      on("addMember") {
         ...
      }.to "fillMember"
      on("goToCart").to "showCart"
   }
   showCart {
      ...
   }
}

Maintenant, ajouter groupe, plusieurs (> 1) membres et aller au panier. Le problème est que lors du remplissage des membres de l'URL reste la même. paramètre d'exécution URL ne change que si les changements d'état (vue).

Firefox se souvient pages fillMember comme une page parce que l'URL ne change pas. Par conséquent, le bouton retour ne fonctionne pas correctement. Si je suis sur showcart et pousser en arrière, je reçois à la page fillMember. De plus simple pression sur le bouton retour retourne fillGroup. Je besoin de passer par toutes les pages fillMember.

Est-il possible de forcer Grails flux web pour modifier le paramètre d'exécution même si je redirigés vers le même état? Ou puis-je mettre mon propre paramètre dans l'URL?

J'ai trouvé une façon assez laid comment faire: utiliser deux états fillMember - fillMember1 et fillMember2, à la fois faire la même chose, on redirige vers une autre. Mais je besoin d'un état plus d'action pour être en mesure de distinguer l'état réel lors de la frappe boutons avant et arrière. Cette construction d'ouvrages, mais je préfère beaucoup plus facile.

Merci pour toutes les réponses

Tom

Était-ce utile?

La solution

Jusqu'à présent, la seule solution que j'ai trouvé est celui que je le disais. Utilisez deux états d'affichage, les deux font exactement la même chose, et un état d'action pour maintenir des informations d'état (il serait difficile de distinguer correctement traitées membre sans lui). Le code serait quelque chose comme ceci:

def someFlow = {
   ...
   fillGroup {
      on("addMember"){
         ...
      }.to "fillMemberLogic"
   }
   fillMemberLogic {
      action {
         ...
         flow.stateinf += 1
         if(flow.stateinf%2 == 1)
            return gotoFillMember1()
         else
            return gotoFillMember2()
      }
      on("gotoFillMember1").to "fillMember1"
      on("gotoFillMember2").to "fillMember2"
   }      
   fillMember1 {
      on("addMember") {
         ...
      }.to "fillMemberLogic"
      on("goToCart").to "showCart"
   }
   fillMember2 {
      on("addMember") {
         ...
      }.to "fillMemberLogic"
      on("goToCart").to "showCart"
   }
   showCart {
      ...
   }
}

Étant donné que la vue est en cours de modification pour tous les membres, le paramètre d'exécution est également modifiée et l'URL est distincte pour chaque membre. Firefox différencie pages vues selon l'URL, donc vous pouvez aller et venir par tous les membres à l'aide de boutons avant et arrière.

Flux Web est l'URL de mappage avec l'état actuel de l'objet de flux. Par conséquent, il est facilement possible de distinguer les membres actuels que vous traitez après plusieurs poussées de bouton retour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top