2011-05-16 81 views
1

我有一個列表頁面,列出所有項目,每個項目都有一個刪除鏈接。用戶可以點擊這個鏈接刪除這個項目,這是刪除鏈接格式:http://localhost:8080/list.htm?op=del&id=1234如何更改客戶端點擊鏈接時返回的URL

當用戶點擊刪除鏈接時,它將返回到列表頁面。但是這有一個問題,當用戶刷新頁面時,它會再次調用刪除操作,這會導致錯誤。那麼,如何在服務器端回退響應時更改URL?我希望鏈接仍然是 http://localhost:8080/list.htm

感謝 順便說一句,我使用Spring MVC

張春華

回答

0

假設您沒有在刪除操作中返回任何數據,只需返回一個HTTP 303響應,並將Location標頭設置爲'list.htm'。另外,您也可以通過JavaScript在客戶端收到響應之後:

window.location = '/list.htm' 

我建議,然而,有一個單獨的終結點刪除。使用名爲list的端點來刪除一個對象是沒有意義的;相反,鏈接應該碰到一個端點,如delete.htm?id = 1234(然後可以發送303重定向回到list.htm)。

0

嗯,我能想到的一個簡單的方法是,將刪除代碼一個單獨的頁面上,
然後再次將用戶重定向到列表頁面。 我不太瞭解Spring MVC,但它看起來像你用PHP來刪除它,
判斷由?在URL中。 (或許不是它的.htm,但不管) 重定向在PHP將
<?php

header('Location: list.htm') ;

?>

這是假設list.htm是在同一目錄下新的刪除頁面。 所以有一個基本的想法,不管你是否使用PHP都取決於你,我不知道你的代碼的其他部分是什麼樣子,所以我不能幫助更多。

+0

是什麼讓你認爲OP使用PHP? – 2011-05-16 15:51:39

+0

好吧,我只是在繼續?在URL中,但正如你所看到的,我改變了主意 – Richard 2011-05-17 09:45:01

0

解決您的問題的模式被稱爲Post/Redirect/Get。在接收和處理POST(或者如果你願意的話)之後,你想要發送一個HTTP重定向到客戶端,以便他們的瀏覽器用GET請求加載列表頁面。

如果您使用的是標準作爲UrlBasedViewResolver,你可以簡單地做:

return "redirect:your-list-view"; 

看看春節文檔的更多一些信息的部分15.5.3

相關問題