2011-09-03 60 views
0

有一种称为Post+Redirect+Get的网络编程技术,它尝试在点击刷新按钮时避免重复的表单提交。发布+重定向+使用提交的数据获取结果视图

这种模式在以下主题讨论:

How to avoid resubmit in jsp when refresh?

的问题是,这种技术不会在重定向后,我需要使用提交的参数来呈现结果视图情景工作。由于第二个请求(请求结果页的请求)没有提交参数。

在我的具体情况中,我有一个搜索表单,它根据填写的条件返回书籍列表。在结果页面中,原始搜索表单将显示在标题中,并重新填充提交的参数(如在Google搜索中完成的那样)。假设收到列表中的每本书都以可以编辑其详细信息的方式呈现。因此,用户在列表上编辑其中一本书,并提交编辑的列表(即,由他提交编辑的书籍和原始搜索条件)。应用程序现在应该更新数据库并根据提交的标准再次搜索数据库。 所以我可以在重定向之前进行数据库更新。但是我不能在重定向之后进行新的搜索,因为此时我没有标准参数。

我已经看到了两个解决方案:

  1. 重定向之前,节省会议提交的参数,然后从重定向后的会话读取它们当渲染结果视图(也许去除他们在会议结束后)。 --->我不想使用这种方法,因为我不想为我的应用程序的这个方面使用会话。

  2. 当您重定向到结果URL时,将提交的参数连接到URL(如GET请求中所做的那样)(或者只有那些用于呈现结果视图所需的参数),这样您可以拥有当你渲染结果视图时重定向后的参数--->一个好的解决方案,不太满意,因为用户将得到一个很长的URL的结果视图。

我的问题是,你有没有遇到任何其他方法 - 最好是优雅 - 来解决这个问题?

谢谢!

P.S.我使用Java和Spring框架,但我认为我的问题适用于任何合理的Web框架。

回答

0

一些其他的想法:

  1. 使用Cookie
  2. 存储在数据库中的信息,并通过查询参数做时得到来关注一下吧。
  3. 与#2相同,但使用分布式缓存。
0

Spring MVC的RedirectAttributes功能正是您所需要的。

相关问题