题
我有问题要得到正确的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。因此它很容易可以区分您正在经过多次返回按钮推动处理当前构件。
不隶属于 StackOverflow