Domanda

Sto avendo problemi per ottenere il lavoro pulsante Indietro del browser correttamente sul flusso web. Versione del graal è 1.1.2. Immaginate di codice di esempio:

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

Ora, aggiungo gruppo, diversi (> 1) membri e vado al carrello. Problema è che durante il riempimento i membri URL rimane lo stesso. parametro esecuzione URL cambia solo se le variazioni di stato (vista).

Firefox ricorda le pagine fillMember come una pagina perché l'URL non cambia. Pertanto pulsante Indietro non funziona correttamente. Se io sono in showCart e spingere indietro, ottengo alla pagina fillMember. Ulteriore pressione di pulsante Indietro ritorna fillGroup. Ho bisogno di passare attraverso tutte le pagine fillMember.

C'è un modo per forzare il flusso web Grails per modificare il parametro di esecuzione anche se ho reindirizzato allo stesso stato? Oppure posso mettere il mio parametro nell'URL?

Ho trovato un modo abbastanza brutto come farlo: usare due fillMember afferma - fillMember1 e fillMember2, sia facendo la stessa cosa, un reindirizza ad un altro. Ma ho bisogno di un altro Stato azione per essere in grado di distinguere il reale stato quando colpisce pulsanti avanti e indietro. Questo costruire opere, ma io preferirei modo più semplice.

Grazie per eventuali risposte

Tom

È stato utile?

Soluzione

Finora, l'unica soluzione che ho trovato è quello che ho detto. Utilizzare due stati di visualizzazione, sia facendo esattamente la stessa cosa, e uno stato d'azione per tenere alcune informazioni di stato (sarebbe difficile distinguere correttamente membro lavorato senza di esso). Il codice potrebbe essere qualcosa di simile:

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

Poiché la vista viene cambiato ad ogni membro, il parametro esecuzione viene anche cambiata e URL è distinta per ogni membro. Firefox che distingue le pagine visualizzate in base alla URL, in modo da poter andare avanti e indietro attraverso tutti i membri utilizzando pulsanti avanti e indietro.

flusso Web è URL mapping con lo stato corrente dell'oggetto flusso. Quindi è facilmente possibile distinguere il membro corrente si elaborano dopo diverse spinte pulsante indietro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top