2011-03-30 36 views
3

對不起,這個問題,但今天我覺得缺乏想法。我需要的是在spring mvc中實現請求確認的好方法。假設我有在Spring MVC中確認動作的推薦模式?

@RequestMapping(params = "action=deleteitem") 
public ModelAndView deleteItem(@RequestParam(value = "id") int id){ 

... 
} 

我想要一些我可以重複使用的東西,比如帶有參數消息的確認頁面,然後回想一下。我可以想到100種方法,但沒有一種看起來乾淨優雅。所以我想從誰那裏獲得比我更多的經驗。

回答

0

我正在使用類似於下面的內容,使用jQuery overlay並定義了modalyesno jsp標記。

刪除按鈕 - 在rev屬性我提供delete action,這將作爲用戶確認刪除請求(點擊是)。一個<t:modalyesno />組件可能適用於許多刪除按鈕。

<a href="#" class="modalInput" rev="deleteitem.html?id=123" rel="#yesno" >Delete</a> 
<t:modalyesno id="yesno"> 
    Deleting item. Are You sure ? 
</t:modalyesno> 

modalyesno.tag:

<%@ tag description="Confirmation Dialog" pageEncoding="UTF-8"%> 
<%@ attribute name="id" required="true" type="java.lang.String" %> 
<!-- confirm modal dialog --> 
<div class="modal" id="${id}"> 
    <div style="text-align: center;"> 
     <div> 
      <jsp:doBody/> 
     </div> 
     <div class="buttons"> 
     <a class="close" href="#"><span>No</span></a> 
     <a class="close yes" href="#"><span>Yes</span></a> 
     </div> 
    </div> 
</div> 

的jQuery:

$(document).ready(function(){ 
     $(".modalInput").overlay({ 
      mask: { 
       color: '#aaa', 
       loadSpeed: 'fast', 
       opacity: 0.5 
      }, 
      speed: 'fast', 
      closeOnClick: true 
     }); 
     $('.modalInput').click(function(){ 
      var modal = $(this).attr('rel'); 
      var action = $(this).attr('rev'); 
      /* set action on yes button */    
      $(modal).find('.yes').eq(0).attr('href', action); 
     }); 
}); 
+1

我的這個解決方案的問題是,它違反了標準。您絕對不應該使用GET操作來修改數據。想象一下GoogleBot在抓取您的網站。它不知道YES和NO鏈接的區別,可以清除整個數據庫。 我強烈建議您找到一種方式來發布或刪除網絡資源,這樣一個無辜的機器人將會避免這些方法,並且您的應用程序符合完善的標準。 – Eddie 2011-09-20 16:39:05

+0

@Eddie它在你的系統中一定是一個嚴重的安全漏洞。如果機器人可能會損壞您的系統,任何人都可以。 – Vic 2013-06-25 11:28:38

+0

哈哈,是的@vic,閱讀我最後的評論我的用例肯定有點極端,但我對堅持標準的看法依然存在。 Create = post,read = get,update = put,delete = delete。 – Eddie 2013-07-01 19:06:50