今天使用springMVC的資料驗證的時候,看似很簡單的東西,卻有一個很大的陷阱:提交空表單的時候總是出現404錯誤,但是後臺卻不給你報任何錯。遇到這個錯誤這個很苦惱,搞了幾小時,今天記錄並分享一下解決經驗(本人使用註解式的資料驗證):
錯誤例子:
@RequestMapping(value="/login",method=RequestMethod.POST) public String login(@Valid @ModelAttribute("contentModel") LoginModel lm,Model model,BindingResult result) throws NoSuchAlgorithmException{ if(result.hasErrors()) return login(model); return "login_ok"; }
造成這個原因的因為我們隨意放置下面login()方法的引數,springMVC的引數順序應該是BindingResult必須跟隨在自定義的模型之後,所應正確的做法是:
public String login(Model model,@Valid @ModelAttribute("contentModel") LoginModel lm,BindingResult result) throws NoSuchAlgorithmException{ if(result.hasErrors()) return login(model); return "login_ok"; }
只要保持 @Valid @ModelAttribute("contentModel") LoginModel lm,BindingResult result 這個順序,在他們前面加HttpServletRequest,HttpServletResponse都沒問題。
本人初學springMVC不久,歡迎大家指出錯誤。