2011-09-04 54 views
0

我是新來的Spring MVC,並尋找一個好辦法做到以下幾點:更新領域,堅持它在Spring MVC

我有顯示用戶的表中的JSP頁面。在我的控制器通過我下面的代碼添加的用戶:

@ModelAttribute("users") 
public List<UserAccount> getAllRegisteredUsers() { 
    return adminService.getRegisteredUsers(); 
} 

在表中我也有一個按鈕,說:「禁用用戶」。當有人點擊那個按鈕時,我想調用該特定用戶的setEnabled(false)方法來調用,最後在用戶再次顯示相同的頁面之前堅持用戶。現在在JSP中的「禁用用戶」鏈接如下所示:

<a onClick=$.post("/admin/deactivate/${user.id}")>Deactivate</a> 

我控制器接收此請求:

@RequestMapping(value = "/admin/deactivate/{id}", method = RequestMethod.POST) 
public String deactivateUser(@ModelAttribute("users") ArrayList<UserAccount> users, @PathVariable("id") Long userId, ModelMap map) { 
    for (UserAccount userAccount : users) { 
     if (userAccount.getId() == userId) { 
      adminService.deactivateUser(userAccount); 
     } 
    } 
    return "admin"; 
} 

這工作得很好,除了頁面沒有被刷新新模型。我必須按F5,然後我可以看到用戶已被禁用。我真的不想在我的deactivateUser方法中返回任何東西,只需更新當前頁面的模型。什麼是最好的方法來做到這一點?

回答

1

由於這是一個ajax請求,你必須用ajax(看起來像jQuery)更新你的頁面。您可以簡單地返回true/false來指示停用是否成功。

+0

那麼只需從deactivateUser方法返回一個布爾值?我該如何接收jsp頁面中的布爾值?你有一個簡單的代碼示例? – KimAMartinsen

+0

$ .post函數有另一個參數 - 一個回調'$ .post(「..」,函數(數據){..}' - 數據將是「true」或「false」 – Bozho

+0

perfect!thanks :-) – KimAMartinsen