/**
* 跳转到用户信息更新页面
* @param id
* @param model
* @return
*/
@RequestMapping(value = "/update/{id}",method = RequestMethod.GET)
public String update(@PathVariable("id") Integer id,Model model){
// 要从数据库查询对象进行回显
User user = userService.load(id);
model.addAttribute("user",user);
// 所有的角色列表
model.addAttribute("roles",roleService.list());
/**
* 根据用户 id 查询用户的所有角色
*/
List hasRoles = userService.listUserRole(id);
/**
* 将用户的所有角色 id 添加到一个字符串中
*/
List rids = new ArrayList<>();
for(Role r:hasRoles) {
rids.add(r.getId());
}
// 指定用户拥有的角色信息
model.addAttribute("hasRole", rids);
return "user/update";
}
/**
* 更新用户的信息(包括更新用户绑定的角色)
* @param user
* @return
*/
@RequestMapping(value = "/update/{id}",method = RequestMethod.POST)
public String update(User user,HttpServletRequest request,String[] newPassword,Model model){
// // TODO: 2016/9/18 这个过程还是可以优化的,如果属性没有发生变化的地方,是不须要更新的
logger.debug("user => " + user);
if(newPassword[0].equals(newPassword[1])){
if(newPassword[0]!=null && newPassword[0]!=""){
user.setPassword(newPassword[0]);
}
String[] roleIds = request.getParameterValues("roleId");
List roleIdList = new ArrayList<>();
for(String roleId:roleIds){
roleIdList.add(Integer.valueOf(roleId));
}
userService.update(user,roleIdList);
return "redirect:/admin/user/list/1";
}else{
model.addAttribute("msg", "密码不一致");
return "redirect:/admin/user/update/"+user.getId();
}
}