1. 程式人生 > >SpringMVC 400 Bad Request 問題

SpringMVC 400 Bad Request 問題

在提交表單時,發生400錯誤,並未進入save方法。

?
1 2 3 4 5 6 7 8 9 10 @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引數順序不同導致異常

約定的BindingResult必須緊隨@valid之後。    

原來我這裡的400是這個原因導致的。以下為正確順序:

?
1 2 3 4 5 6 7 8 9 10 @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錯誤的原因現在知道的有以下兩點:

1、提交表單資料型別與model不匹配

2、方法引數順序不正確

3、另一種是form表單中有日期,Spring不知道該如何轉換,如要在實體類的日期屬性上加@DateTimeFormat(pattern="yyyy-MM-dd")註解