有一种称为Post+Redirect+Get的网络编程技术,它尝试在点击刷新按钮时避免重复的表单提交。发布+重定向+使用提交的数据获取结果视图
这种模式在以下主题讨论:
How to avoid resubmit in jsp when refresh?
的问题是,这种技术不会在重定向后,我需要使用提交的参数来呈现结果视图情景工作。由于第二个请求(请求结果页的请求)没有提交参数。
在我的具体情况中,我有一个搜索表单,它根据填写的条件返回书籍列表。在结果页面中,原始搜索表单将显示在标题中,并重新填充提交的参数(如在Google搜索中完成的那样)。假设收到列表中的每本书都以可以编辑其详细信息的方式呈现。因此,用户在列表上编辑其中一本书,并提交编辑的列表(即,由他提交编辑的书籍和原始搜索条件)。应用程序现在应该更新数据库并根据提交的标准再次搜索数据库。 所以我可以在重定向之前进行数据库更新。但是我不能在重定向之后进行新的搜索,因为此时我没有标准参数。
我已经看到了两个解决方案:
重定向之前,节省会议提交的参数,然后从重定向后的会话读取它们当渲染结果视图(也许去除他们在会议结束后)。 --->我不想使用这种方法,因为我不想为我的应用程序的这个方面使用会话。
当您重定向到结果URL时,将提交的参数连接到URL(如GET请求中所做的那样)(或者只有那些用于呈现结果视图所需的参数),这样您可以拥有当你渲染结果视图时重定向后的参数--->一个好的解决方案,不太满意,因为用户将得到一个很长的URL的结果视图。
我的问题是,你有没有遇到任何其他方法 - 最好是优雅 - 来解决这个问题?
谢谢!
P.S.我使用Java和Spring框架,但我认为我的问题适用于任何合理的Web框架。