Spring Controller“重定向”

时间:2014-04-01 11:22:58

标签: java javascript spring spring-mvc

我一直在寻找这个问题的解决方案一段时间没找到任何!!

解释我将给出的问题和例子:

让我们想象一下,我有一个带有结果的搜索页面X(x1 .... x10)和一个提供反馈的表格。此表单将调用定义为'/feedback.html'的控制器(java spring controller)的链接。提交反馈后,控制器应再次返回X,结果相同。这是问题所在,我该怎么做?因为这个反馈控制器可以根据表格的位置转到X或任何其他页面!

总结:如何在控制器(java spring controller)中执行javascript历史记录(-1)?

由于

3 个答案:

答案 0 :(得分:1)

“重定向”Spring功能通常在PRG模式下使用。根据您的标题和用例,我会假设您在提交表单后尝试重定向到搜索页其他页面(表单操作似乎是'/feedback.html') 。

所以基本上你有你的反馈控制器应该有一个@RequestMapping注释方法,如@RequestMapping(value = "/feedback.html", method = RequestMethod.POST)。从那里开始,在此方法中,您可以通过返回与Spring应用中的现有映射匹配的String来重定向您想要的任务(例如,如果您想重定向到搜索页面,则给定您的搜索页面与@RequestMapping(value = "/search.html", method = RequestMethod.GET)映射,只需返回"redirect:/search.html"

请注意,必须重新运行整个“搜索页面”逻辑(重定向发出新的GET请求),因此如果您不希望这种情况发生,您确实必须将搜索结果存储在会话中(不确定)这有什么意义......但它有可能)。

编辑:如果您的网址映射允许,您还可以将请求重定向到包含搜索参数的搜索页面,例如:"redirect:/search.html?myParam=10"

答案 1 :(得分:1)

如果您按以下方式访问搜索页:

http://domain.com/search/query

http://domain.com/search?query=text

然后你可以将这个ulr和反馈表一起传递(通过添加一个隐藏的输入及其值的URL)

<% request.setAttribute("redirectURL",
       request.getAttribute("javax.servlet.forward.request_uri"));%>
<form:hidden path="redirectURL" value="${redirectURL}"/>

然后在控制器中只需访问redirectURL属性并重定向到搜索页面,同一查询显示相同的结果。

答案 2 :(得分:0)

我认为,在搜索控制器中,您可以在会话中存储X ,并在您的反馈控制结束时发送重定向到调用搜索控制器的URL(相同的方法或其他方法)使用会话中保存的X加载搜索结果页面。

您还可以使用hiden字段传递X参数(如果您不想使用会话)。