2012-07-26 107 views
1

模板我要解決下面的問題,這是關於從數據庫中刪除實體:如何處理與重定向

  1. 用戶選擇刪除一定實體
  2. 的從刪除數據庫並從列表中消失
  3. 撤消框出現在頁面內(如Twitter Bootstrap alert messages),用戶可以選擇撤消刪除。

我不知道如何實現這一點,因爲此刻我解決這個問題呀:

  • 刪除按鈕鏈接到的網址:刪除/ ENTITY_ID
  • 我已經寫如果 - 情況下該URL在我的請求處理程序,刪除後刪除實體
  • 完成後,我送response.sendRedirect(/list)所以更新列表顯示

這樣我不能通過重定向發送其他數據。通常我會通過模板處理額外的數據,但是redirect這是不可能的。

這樣一個觀點如何解決?

回答

1

您可以使用setAttribute()getAttribute()方法HttpSession。畢竟這是一種如何通過不同的HTTP請求傳遞Java對象的方式。

在你的情況下,你可以創建這樣的Undo對象並將它存儲在會話中。在描述重定向之後,會話對象被檢索並將其內容傳遞給模板。

2

我很少有這樣的場景在我的web應用程序,這是我如何解決它

我有一個看起來像下面

public class MessageQueue { 

    public static Hashtable<String, Object> messages = new Hashtable<String, Object>(); 

    public static void putMessage(String key, Object obj) 
    { 
    messages.put(key, obj); 
    } 

    public static Object getMessage(String key) 
    { 
    if(key == null) 
     return null; 

    Object obj = messages.get(key); 

    if(obj == null) 
     return null; 

    messages.remove(key); 

    return obj; 
    } 

} 

一類被稱爲消息隊列現在這個班留在記憶中。在重定向之前,我創建了一些重定向後需要的對象。創建一個隨機的Guid爲字符串,然後將此對象存儲在消息隊列

我然後添加此GUID作爲URL

字符串justDeletedId =「someId」的參數; String guid =(new Guid())。toString(); MessageQueue.put(guid,justDeletedId); sendRedirect(「\ list \?msgid =」+ guid);

現在重定向後,您可以檢查郵件ID,並從消息隊列刪除對象,做任何你請

我選擇允許使用該對象一次......以避免內存泄露

在當前版本...我也實施了最後訪問驅逐政策,它使用石英作業,定期清理此消息隊列

+0

+1這似乎是一個可靠的解決方案,我不確定的唯一的事情是國家創建。一個Web應用程序不應該是如此有狀態的,但在某個地方你必須畫出我想要的路線。 – Mahoni 2012-07-27 01:10:07

+0

如果它回答了你的問題,你可以選擇這個答案作爲答案 – jsshah 2012-07-27 17:52:18