bindingResult无法捕获校验错误
错误复现
原工程代码,RegisterForm
对象设置了校验规则
预期的返回结果
{
"code": 4,
"msg": "表单错误",
"data": null
}
实际执行结果
并且控制台打出了异常堆栈,而且记录的log4j日志也没有显示
原因
经过查阅资料,得到原因
@Valid 和 BindingResult
是一一对应的,如果有多个@Valid,那么每个@Valid后面跟着的BindingResult就是这个@Valid的验证结果,顺序不能乱
解决
故将BindingResult
跟在RegisterForm
后面即可
public ResultVO doRegister(@Valid RegisterForm registerForm, BindingResult bindingResult, HttpServletRequest request) throws Exception{
再次执行得到预期返回值
控制台也打出预期的日志,并没有显示异常