页面使用form提交数据,controller中使用对象接收参数,有时会发生400错误,错误信息返回到页面了,错误信息为Validation failed for object=‘xxx’。这时,后台不会打印错误的详情,controller方法也不会进入。有文章针对这个情况提出一个纠错方法就是加入BindingResult的自动注入参数,然后就能进入方法了,并且打印错误详情。例如:
@RequestMapping(value = "/update")
@ResponseBody
public voidupdate(Order order,BindingResult result) {
if(result.hasErrors()){
List<ObjectError> ls = result.getAllErrors();
for (int i = 0; i < ls.size(); i++) {
System.out.println("error:"+ls.get(i));
}
}
//do something
}
但我使用这种方法并不能进入controller方法中,经查,我的接收参数的对象中有Date字段,于是给该字段加上了@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
注解,之后便没有了该异常。