代码之家  ›  专栏  ›  技术社区  ›  Tomik

Grails浏览器后退按钮的web流问题

  •  0
  • Tomik  · 技术社区  · 15 年前

    我无法在web流上使浏览器的“后退”按钮正常工作。 grails的版本是1.1.2。

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

    现在,我添加组,几个(>1) 成员,然后进入购物车。问题是,在填充成员时,URL保持不变。URL执行参数仅在状态(视图)更改时更改。

    因此Firefox会将fillMember页面记住为一个页面,因为URL不会改变。所以后退按钮不能正常工作。如果我在showCart上并向后推,我将进入fillMember页面。进一步按下后退按钮返回fillGroup。我需要它来浏览所有的会员页面。

    即使我重定向到相同的状态,有没有办法强制GrailsWebFlow更改执行参数?或者我可以将自己的参数放入URL中吗?

    谢谢你的回答

    汤姆

    1 回复  |  直到 12 年前
        1
  •  2
  •   Tomik    15 年前

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

    由于每个成员的视图都在更改,因此执行参数也在更改,并且每个成员的URL都是不同的。Firefox根据URL区分查看的页面,因此您可以使用后退和前进按钮在所有成员之间来回切换。

    Web流正在将URL映射到流对象的当前状态。因此,在按下几个后退按钮后,很容易区分您正在处理的当前成员。