2014-04-01 37 views
1

我一直在寻找这个问题的解决方案一段时间,没有找到任何!弹簧控制器“重定向”

为了说明问题,我会给与例如:

让我们想象一下,我有一个结果(X1 .... X10)和形式给予反馈的搜索页面X。这个表单将调用一个定义为'/feedback.html'的控制器(java弹簧控制器)的链接。提交反馈后,控制器应该再次返回到X,结果相同。这是问题,我该怎么做?因为这个反馈控制器可以去X或任何其他页面,取决于表单的位置!

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

感谢

+0

如何进入搜索页面?与Get请求或帖子?即搜索字符串是否出现在网址中? –

+0

通过获取,但我真的想找到的是一种方法来做历史(-1),但在控制器..(或通过重新提交标题再次提交...我不知道......我甚至不知道这是否可能) – amachado

回答

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属性并重定向到带有sa的搜索页面我查询显示相同的结果。

+0

这是我想要做的,但问题开始时,反馈可以在多页。我也尝试重定向到request.getHeader(“Referer”),但如果Referer页面有一些参数(用于搜索查询,或者产品页面是产品Id),我不会那么做! – amachado

+0

我已经改变了隐藏字段的值,这应该把当前网址的值 –

+0

它会传递当前页面的url的值,无论这个页面是什么 –

0

我认为,在搜索控制器,可以商店X会话,并在您的反馈CONTROLER结束发送重定向到调用搜索控制器(同梅索德或另一个的URL )使用会话中保存的X加载搜索结果页面。

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

1

“重定向”弹簧功能通常在PRG模式中使用。鉴于您的标题和您的用例,我假设您在提交表单(表单动作似乎为'/feedback.html')之后尝试将其重定向到搜索页另一个页面。

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

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

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