Frage

Ich habe Probleme Browser-Zurück-Taste richtig funktioniert auf Web-Flow zu erhalten. Version von Grails ist 1.1.2. Stellen Sie sich vor Beispielcode:

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

Nun, ich hinzufügen Gruppe, mehr (> 1) Mitglieder und den Warenkorb gehen. Das Problem ist, dass die Mitglieder bei der Befüllung der URL bleibt gleich. URL Ausführungsparameter ändert sich nur, wenn der Zustand (Ansicht) ändert.

So Firefox fillMember Seiten als eine Seite erinnert, weil die URL ändert sich nicht. Daher Zurück-Taste funktioniert nicht richtig. Wenn ich auf showCart bin und zurückzudrängen, erreiche ich fillMember Seite. Weiterer Stoß zurück Taste kehrt fillGroup. Ich brauche es durch alle fillMember Seiten zu gehen.

Gibt es eine Möglichkeit Grails Web-Flow zu zwingen auch die Ausführungsparameter zu verändern, auch wenn ich auf den gleichen Zustand umgeleitet? Oder kann ich lege meine eigenen Parameter in die URL?

fand ich eine ziemlich hässliche Art und Weise, wie das zu tun: Verwenden Sie zwei fillMember Staaten - fillMember1 und fillMember2, die beide das gleiche tun, einem zum anderen weiterleitet. Aber ich brauche noch einen Aktionszustand in der Lage sein den Ist-Zustand zu unterscheiden, wenn vor und zurück Tasten zu treffen. Dieses Konstrukt funktioniert, aber ich würde einfache Art und Weise bevorzugen.

Danke für alle Antworten

Tom

War es hilfreich?

Lösung

Bisher war die einzige Lösung, die ich gefunden habe, ist die, die ich erwähnt. Verwenden Sie zwei Ansichtsstatus, beide tun genau das Gleiche, und eine Aktion Zustand einige Zustandsinformationen zu halten (es wäre schwierig, richtig bearbeitete Element zu unterscheiden, ohne sie). Der Code würde wie folgt sein:

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 {
      ...
   }
}

Da die Ansicht für jedes Mitglied geändert wird, wird die Ausführungsparameter auch wird geändert und URL unterscheidet sich für jedes Mitglied. Firefox unterscheidet Seiten betrachtet nach URL, so können Sie hin und her durch alle Mitglieder gehen mit Zurück- und Vorwärts-Tasten.

Web Fluss Mapping URL mit aktuellem Status Flußobjekt. Daher ist es leicht möglich, das aktuelle Element Sie verarbeiten nach mehreren Zurück-Taste drückt, zu unterscheiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top