controller代碼
@RequestMapping("")
public String index(@Valid User user , BindingResult bindingResult){
if (bindingResult.hasErrors()){
List<ObjectError> allErrors = bindingResult.getAllErrors();
ObjectError objectError = allErrors.get(0);
System.out.println(objectError.getDefaultMessage());
System.out.println(objectError.getObjectName());
System.out.println(allErrors);
}
return "index";
}
請求先來到DispatcherServlet的doDispatch 方法,最終會調用ModelAttributeMethodProcessor#resolveArgument方法

調用DataBinder#validate方法后調用ConstraintTree#validateSingleConstraint,由它來調用具體的驗證器

具體的驗證器

