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{

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

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

最后修改:2023 年 09 月 07 日
如果觉得我的文章对你有用,请随意赞赏