gpt4 book ai didi

grails - 使用浏览器的后退按钮可以使Web流程出现问题

转载 作者:行者123 更新时间:2023-12-02 15:15:20 25 4
gpt4 key购买 nike

我在使浏览器的后退按钮在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执行参数仅在状态( View )改变时才改变。

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

即使我重定向到相同状态,是否有任何方法可以强制Grails Web流更改执行参数?还是可以在URL中输入自己的参数?

我发现了一种非常丑陋的方法:使用两个fillMember状态-fillMember1和fillMember2,它们都做相同的事情,一个重定向到另一个。但是我还需要一个 Action 状态,以便在按下后退和前进按钮时能够区分实际状态。这种构造有效,但是我更喜欢更简单的方法。

谢谢你的回答

汤姆

最佳答案

到目前为止,我找到的唯一解决方案是我提到的解决方案。使用两个 View 状态,它们都做完全相同的事情,并使用一个 Action 状态来保存一些状态信息(如果没有它,很难正确地区分已处理的成员)。该代码将是这样的:

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

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

Web流是使用流对象的当前状态映射URL。因此,在多次按后退按钮之后,很容易区分正在处理的当前成员。

关于grails - 使用浏览器的后退按钮可以使Web流程出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2022022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com