千家信息网

如何解决@Valid校验无效,BindingResult未获得错误

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"如何解决@Valid校验无效,BindingResult未获得错误",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何解决@Valid校验
千家信息网最后更新 2026年10月31日如何解决@Valid校验无效,BindingResult未获得错误

本篇内容主要讲解"如何解决@Valid校验无效,BindingResult未获得错误",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何解决@Valid校验无效,BindingResult未获得错误"吧!

目录
  • @Valid 校验失效

    • 问题描述

    • 解决过程

  • 使用bindingResult做参数校验

    • 在控制类中

    • 实体类OrderForm

@Valid 校验失效

问题描述

使用@Valid校验实体类中的属性stuTele

import javax.validation.constraints.Size;...@Size(min = 11,max = 11,message = "请输入11位手机号码")private String stuTele;

Controller中,用@Valid注解对传入的student对象属性值校验

public String updateStuMsg(@Valid  Student student, BindingResult bindingResult, Model model, HttpSession httpSession){......}

在传入错误参数后,发现bindingResult中记录的error为0,说明校验无效

解决过程

检查引入的依赖:

    org.hibernate    hibernate-validator    7.0.1.Final    javax.validation    validation-api    2.0.1.Final

在将hibernate-validator的版本切换到 5.4.1.Final 后,发现校验正常

所以定位为依赖的版本问题。

我的springboot版本为2.5.1,在将依赖替换为下面的内容后,校验生效

    org.springframework.boot    spring-boot-starter-validation

进入spring-boot-starter-validation 里面,查看它的依赖项,其中有这样一条

    org.hibernate.validator    hibernate-validator    6.2.0.Final    compile

所以在外部修改依赖的时候,也可以直接使用这一版本。

validation-api 这条依赖可以不用保留。

那么最新的7.0.1.Final版本该如何使用?官方文档里是这样说的

Jakarta Bean Validation 定义了与 CDI(Jakarta EE 的上下文和依赖注入)的集成点。如果您的应用程序在不提供这种开箱即用集成的环境中运行,您可以通过将以下 Maven 依赖项添加到您的 POM 来使用 Hibernate Validator CDI 可移植扩展:

示例 1.3:Hibernate Validator CDI 可移植扩展 Maven 依赖项

    org.hibernate.validator    hibernate-validator-cdi    7.0.1.Final

请注意,在 Java EE 应用程序服务器上运行的应用程序通常不需要添加此依赖项。

那么,只需要把前面的依赖都替换成这一条,就可以了

    org.hibernate.validator    hibernate-validator-cdi    7.0.1.Final

使用bindingResult做参数校验

在控制类中

 @RequestMapping("/create")    public void create(@Valid OrderForm orderForm, BindingResult bindingResult){        if(bindingResult.hasErrors()){            log.error("【创建订单参数不正确】,orderForm={}",orderForm);            //bindingResult.getFieldError().getDefaultMessage()可以获取到错误的提示            throw new OrderException(ResultEnums.PARAM_ERROR.getCode(),bindingResult.getFieldError().getDefaultMessage());        }    }

实体类OrderForm

@Datapublic class OrderForm {    @NotEmpty(message = "姓名必填")    private String name;//买家姓名    @NotEmpty(message = "手机号必填")    private String phone;//买家手机号    @NotEmpty(message = "地址必填")    private String address;//买家地址    @NotEmpty(message = "openid必填")    private String openid;//买家微信    @NotEmpty(message = "购物车不能为空")    private String items;//购物车}

到此,相信大家对"如何解决@Valid校验无效,BindingResult未获得错误"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

版本 错误 买家 参数 内容 实体 应用程序 手机 程序 问题 应用 地址 姓名 属性 手机号 购物车 过程 学习 控制 移植 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 中关村互联网 科技集团 广州百单互联网科技有限公司 国智互联网科技 美国互联网保险保险科技 A股互联网金融科技公司 互联网中国科技 科技制造互联网公司 以房互联网科技 碳银互联网科技有限公司 汉立互联网科技有限公司联系电话 北京华百购互联网科技有限公司 常德市电业局互联网科技部 互联网和黑科技的看法 互联网与医疗科技 宜昌元轩互联网科技有限公司 长沙茂晟互联网科技有限公司 互联网科技圈年度人物 互联网科技对化妆品行业 科技互联网专业务虚会材料 华服互联网科技靠谱吗 互联网科技公司怎么样 美国互联网前沿科技 佩信高科技互联网 农村开互联网科技讲堂 佛山市翊博互联网络科技有限公司 世界互联网领先科技成果获奖 中国互联网有什么科技 上海互联网科技公司ppt 长沙渺峰互联网科技有限公司
0