package org.xmx0632.deliciousfruit.web.account; import java.util.List; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.xmx0632.deliciousfruit.entity.User; import org.xmx0632.deliciousfruit.service.account.UserService; /** * 管理员管理用户的Controller. * * @author calvin */ @Controller @RequestMapping(value = "/account/user") public class UserController { @Autowired private UserService userService; @RequestMapping(method = RequestMethod.GET) public String list(Model model) { List<User> users = userService.getAllUser(); model.addAttribute("users", users); return "account/userList"; } @RequestMapping(value = "update/{id}", method = RequestMethod.GET) public String updateForm(@PathVariable("id") Long id, Model model) { model.addAttribute("user", userService.getUser(id)); return "account/userForm"; } @RequestMapping(value = "update", method = RequestMethod.POST) public String update(@Valid @ModelAttribute("preloadUser") User user, RedirectAttributes redirectAttributes) { userService.updateUser(user); redirectAttributes.addFlashAttribute("message", "更新用户" + user.getLoginName() + "成功"); return "redirect:/account/user"; } @RequestMapping(value = "delete/{id}") public String delete(@PathVariable("id") Long id, RedirectAttributes redirectAttributes) { User user = userService.getUser(id); userService.deleteUser(id); redirectAttributes.addFlashAttribute("message", "删除用户" + user.getLoginName() + "成功"); return "redirect:/account/user"; } /** * 使用@ModelAttribute, 实现Struts2 * Preparable二次部分绑定的效果,先根据form的id从数据库查出User对象,再把Form提交的内容绑定到该对象上。 * 因为仅update()方法的form中有id属性,因此本方法在该方法中执行. */ @ModelAttribute("preloadUser") public User getUser(@RequestParam(value = "id", required = false) Long id) { if (id != null) { return userService.getUser(id); } return null; } }