2011-09-04 94 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