我有问题要得到正确的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执行参数而变化。

所以火狐记得fillMember页面作为一个页面,因为URL不会改变。因此后退按钮不能正常工作。如果我在showCart和推后,我得到fillMember页。返回按钮的进一步推返回fillGroup。我需要它去通过所有的fillMember页面。

有没有办法迫使Grails的网络流量改变,即使我重定向到同一状态的执行参数?或者,我可以把我自己的参数到URL?

我发现一个非常丑陋的方式该怎么做:用两个fillMember状态 - fillMember1和fillMember2,都做同样的事情,一个重定向到另一个。但我需要一个更大的动作状态打回来的时候和前进按钮,能够区分实际状态。这种构造的作品,但我更喜欢简单的方法。

感谢您的任何答案

汤姆

有帮助吗?

解决方案

到目前为止,我发现唯一的解决办法是我所提到的一个。使用两个视图状态,都做同样的事情,一个动作状态来保存一些状态信息(这将是很难区分正确处理成员没有它)。该代码将是这样的:

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是明显为每一个成员。火狐区分开根据URL浏览的网页,这样你就可以来回走,通过使用背面的所有成员和前进按钮。

网络流是与流对象的当前状态映射的URL。因此它很容易可以区分您正在经过多次返回按钮推动处理当前构件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top