Java 弹簧控制器“;重定向";

Java 弹簧控制器“;重定向";,java,javascript,spring,spring-mvc,Java,Javascript,Spring,Spring Mvc,我一直在寻找这个问题的解决方案,但没有找到任何 为了解释问题,我将给出以下示例: 让我们想象一下,我有一个搜索页面X,上面有结果(x1…x10)和一个表单来提供反馈。此表单将调用定义为“/feedback.html”的控制器(JavaSpringController)的链接。提交反馈后,控制器应再次返回到X,结果相同。问题是,我该怎么做?因为此反馈控制器可以转到X或任何其他页面,具体取决于表单所在的位置 总结:如何在控制器(JavaSpringController)中创建javascript历史

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

为了解释问题,我将给出以下示例:

让我们想象一下,我有一个搜索页面X,上面有结果(x1…x10)和一个表单来提供反馈。此表单将调用定义为“/feedback.html”的控制器(JavaSpringController)的链接。提交反馈后,控制器应再次返回到X,结果相同。问题是,我该怎么做?因为此反馈控制器可以转到X或任何其他页面,具体取决于表单所在的位置

总结:如何在控制器(JavaSpringController)中创建javascript历史记录(-1)


谢谢

我认为,在搜索控制器中,您可以在会话中存储X,并在反馈控制器的末尾发送一个重定向到URL,该URL调用搜索控制器(相同的方法或另一种方法),使用会话中保留的X加载搜索结果页面

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

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

所以基本上你有一个反馈控制器,它应该有一个@RequestMapping注释的方法,比如
@RequestMapping(value=“/feedback.html”,method=RequestMethod.POST)
。在该方法中,通过返回与Spring应用程序中现有映射匹配的字符串,您可以将请求重定向到任何地方(例如,如果您想重定向到搜索页面,那么您的搜索页面将映射为
@RequestMapping(value=“/search.html”,method=RequestMethod.GET)
,只需返回
“重定向:/search.html”


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


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

,如果您这样访问搜索页面:

http://domain.com/search/query

然后,您可以将此ulr与反馈表单一起传递(通过添加一个隐藏的输入及其值URL)



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

如何访问搜索页面?使用get请求或post?即搜索字符串是否显示在url中?通过get,但我真正试图找到的是执行历史记录的方法(-1)但是在控制器中…(或者通过重新提交标题…我不知道…我甚至不知道这是否可能)这就是我想做的,但是当反馈可以在多个页面中时,问题就开始了。我还尝试重定向到request.getHeader(“Referer”),但是如果Referer页面有一些参数(用于搜索查询,或用于搜索产品页或产品Id)我不会得到它!!我已更改了隐藏字段的值,这应将当前url放入值中。它将传递当前页面的url值,无论此页面是什么
http://domain.com/search?query=text
<% request.setAttribute("redirectURL",
       request.getAttribute("javax.servlet.forward.request_uri"));%>
<form:hidden path="redirectURL" value="${redirectURL}"/>