2011-09-03 26 views
0

有一種稱爲Post+Redirect+Get的網絡編程技術,它嘗試在點擊刷新按鈕時避免重複的表單提交。發佈+重定向+使用提交的數據獲取結果視圖

這種模式在以下主題討論:

How to avoid resubmit in jsp when refresh?

的問題是,這種技術不會在重定向後,我需要使用提交的參數來呈現結果視圖情景工作。由於第二個請求(請求結果頁的請求)沒有提交參數。

在我的具體情況中,我有一個搜索表單,它根據填寫的條件返回書籍列表。在結果頁面中,原始搜索表單將顯示在標題中,並重新填充提交的參數(如在Google搜索中完成的那樣)。假設收到列表中的每本書都以可以編輯其詳細信息的方式呈現。因此,用戶在列表上編輯其中一本書,並提交編輯的列表(即,由他提交編輯的書籍和原始搜索條件)。應用程序現在應該更新數據庫並根據提交的標準再次搜索數據庫。 所以我可以在重定向之前進行數據庫更新。但是我不能在重定向之後進行新的搜索,因爲此時我沒有標準參數。

我已經看到了兩個解決方案:

  1. 重定向之前,節省會議提交的參數,然後從重定向後的會話讀取它們當渲染結果視圖(也許去除他們在會議結束後)。 --->我不想使用這種方法,因爲我不想爲我的應用程序的這個方面使用會話。

  2. 當您重定向到結果URL時,將提交的參數連接到URL(如GET請求中所做的那樣)(或者只有那些用於呈現結果視圖所需的參數),這樣您可以擁有當你渲染結果視圖時重定向後的參數--->一個好的解決方案,不太滿意,因爲用戶將得到一個很長的URL的結果視圖。

我的問題是,你有沒有遇到任何其他方法 - 最好是優雅 - 來解決這個問題?

謝謝!

P.S.我使用Java和Spring框架,但我認爲我的問題適用於任何合理的Web框架。

回答

0

一些其他的想法:

  1. 使用Cookie
  2. 存儲在數據庫中的信息,並通過查詢參數做時得到來關注一下吧。
  3. 與#2相同,但使用分佈式緩存。
0

Spring MVC的RedirectAttributes功能正是您所需要的。

相關問題