[英]Exclude Spring Controller method from model binding through annotated @ModelAttribute method
我收到對方法getIndex的無效請求,因為缺少請求參數ID。 我可以指定我不希望該請求映射方法進行模型綁定嗎?
@Controller
@RequestMapping ("/admin/admins")
public class AdminUserController {
@RequestMapping (method = RequestMethod.GET)
public String getIndex(ModelMap model) {
model.addAttribute("admins",userService.findAllAdmins());
return "admin/admins/list";
}
@ModelAttribute("user")
public AdminUser getAdminUser(@RequestParam("id") Integer id) {
return userService.findAdminById(id);
}
@RequestMapping (method = RequestMethod.POST)
public String registerAdmin(@Valid @ModelAttribute("user") AdminUser user, BindingResult bindingResult, ModelMap model) {
model.addAttribute("roles", userRoleService.findAll());
if (bindingResult.hasErrors()) {
return "admin/admins/form";
}
else if (!user.getPassword().equals(user.getConfirmPassword())) {
bindingResult.addError(new FieldError("user","confirmPassword", "Passwords don't match"));
return "admin/admins/form";
}
else {
user.setPassword(passwordEncoder.encodePassword(user.getPassword(), null));
try {
userService.save(user);
return "redirect:/admin/admins";
} catch(ApplicationException ce) {
bindingResult.addError(new FieldError("user", "email", "Email already registered"));
return "admin/admins/form";
}
}
}
您可以將id參數設為可選
@ModelAttribute("user")
public AdminUser getAdminUser(@RequestParam(value="id", required=false) Integer id) {
if(id==null){
return new AdminUser();
}
return userService.findAdminById(id);
}
編輯:或松開ModelMap參數:
@RequestMapping (method = RequestMethod.GET)
public ModelAndView getIndex() {
return new ModelAndView("admin/admins/list", "admins",userService.findAllAdmins());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.