如何使会话数据仅保留两个请求

时间:2015-06-26 13:20:19

标签: session grails

Grails:我希望只为两个重要的重定向存在一些数据。如果我使用会话,只要用户的浏览器打开或有时甚至更长时间,它就会保留。如果我使用flash,它将只会在下一个gsp文件呈现之前。我的控制器A用一些数据重定向到另一个控制器B.存储数据直到B的视图b.gsp被渲染。现在在b.gsp中,用户将填写某个表单并提交它以向B中的另一个操作发送另一个请求。我希望A中的数据保持到此时不再存在。 (两个请求对吗?一个重定向和另一个提交)。

<script>
$(function() {

    $('select, ul').dropdown();

});
</script>

好的,你可能会说,为什么不把它放在会话中并在请求回到A后清理那个会话条目。但是如果用户去了b.gsp并且出于某种原因导航到其他页面而不提交数据,在这种情况下,不清理会话数据。它停留在系统中,在我的应用程序中遗留了一些东西。

或者你可能会说,为什么不使用flash,在b.gsp中放置一个隐藏字段,其值从A传递到flash,并在下一次请求B&#39的第二个动作时提交。但不是;假设由于某种原因我无法访问b.gsp(B和b.gsp是完全独立系统的一部分)。我不能搞砸他们。

我试着阅读关于grails中的网络流量和子流程,但我看不出它有什么用。我认为Webflow在同一个控制器中工作(但我不确定)。

任何帮助?

由于

1 个答案:

答案 0 :(得分:0)

考虑使用grails chain。根据文件:

  

[Chain]使用闪存存储在HTTP重定向从一个操作到另一个操作之后隐式保留模型。

可以用作:

def one() {
    chain action: 'two', model: [name: 'Tony', town: 'Birmingham']
}

def two() {
    [name: 'Anthony', country: 'England']
}