2014-04-01 40 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"