簡體   English   中英

通過帶注釋的@ModelAttribute方法將Spring Controller方法從模型綁定中排除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM