在提交表单时,发生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")注解