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{

再次执行得到预期返回值
请输入图片描述

控制台也打出预期的日志,并没有显示异常
请输入图片描述

Last modification:September 7th, 2023 at 02:44 pm
如果觉得我的文章对你有用,请随意赞赏