弹簧控制器“重定向”

Spring Controller "redirect"

本文关键字:重定向 控制器      更新时间:2023-09-26

我一直在寻找这个问题的解决方案,但没有找到!!

为了解释这个问题,我将给出并举例:

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

总结:如何在控制器(java spring控制器)中执行javascript历史记录(-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 属性并重定向到具有相同查询的搜索页面,显示相同的结果。

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

所以基本上你有你的反馈控制器,它应该有一个像@RequestMapping(value = "/feedback.html", method = RequestMethod.POST)这样的@RequestMapping注释方法。从那里和在此方法中,您可以通过返回与 Spring 应用程序中的现有映射匹配的字符串将请求重定向到您想要的任何位置(例如,如果您想重定向到搜索页面,假设您的搜索页面映射了 @RequestMapping(value = "/search.html", method = RequestMethod.GET) ,只需返回 "redirect:/search.html" 即可。

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

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

我认为

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

您还可以传递带有隐藏字段的 X 参数(如果您不想使用会话)。