在提交表單時,發生400錯誤,並未進入save方法。java
@RequestMapping(value="/!save",method = RequestMethod.POST) public String save(@ModelAttribute("user") @Valid UserEntity user, Locale local, BindingResult results){ String message = messageSource.getMessage("name.not.empty", null, local); System.out.println(message); if(results.hasErrors()) return "/user/add"; return "redirect:/user/list"; }
經google後,發現大可能是由於表單數據類型與model不匹配,形成。
可是,通過一再減小model內容後,提交表單,問題依舊。
終於在iteye論壇發現:springMVC參數順序不一樣致使異常spring
約定的BindingResult必須緊隨@valid以後。
mvc
原來我這裏的400是這個緣由致使的。如下爲正確順序:app
@RequestMapping(value="/!save",method = RequestMethod.POST) public String save(@ModelAttribute("user") @Valid UserEntity user, BindingResult results, Locale local){ String message = messageSource.getMessage("name.not.empty", null, local); System.out.println(message); if(results.hasErrors()) return "/user/add"; return "redirect:/user/list"; }
在解決問題以後,作一下總結:
springmvc形成400錯誤的緣由如今知道的有如下兩點:google
一、提交表單數據類型與model不匹配
二、方法參數順序不正確
還有別的場景嗎?但願你們補充。
code