SpringMVC 400 Bad Request 問題
阿新 • • 發佈:2019-02-05
在提交表單時,發生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")註解