@Validated注解不生效问题汇总

article/2025/10/1 7:47:07

@Validated注解不生效问题汇总

文章目录

  • @Validated注解不生效问题汇总
    • 背景:
    • 一:可能原因
      • 原因1:
      • 原因2:
      • 原因3:
      • 原因4:
    • 二:补充全局异常对validation的处理

背景:

项目框架应用的是validation进行检验的,但是最近一直不生效,然后排查了下问题,总结了失效的常见几个原因:

一:可能原因

原因1:

在2.3.0版本之前spring-boot-starter-web是集成了validation检验的 但是在2.3.0开始就去掉了该依赖,所以需要自己添加该依赖。

添加依赖为:

       <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.0.2</version></dependency>

原因2:

参数如果是非对象格式,需要在controller类上面添加@Validated注解

image-20230213111337727

原因3:

参数如果是对象的话,属性的前面的需要添加 @Valid注解

image-20230213112536348

原因4:

如果是嵌套对象的话,里面的对象还要添加 @Valid注解,截图如下:

image-20230213112604322

image-20230213112631498

这里要注意,如果是集合对象,同样需要添加@Valid注解,不然不生效的

image-20230213112649877

二:补充全局异常对validation的处理

/*** 处理 @Validated 异常信息** @param req* @param e* @return*/
@ExceptionHandler
public BaseResponse methodArgumentNotValidExceptionHandler(HttpServletRequest req, MethodArgumentNotValidException e) {log.warn("Url:{},Method:{} .\nController called error!Catch in ErrorHandler", req.getRequestURI(),req.getMethod(), e);String message = "";try {message = e.getMessage().substring(e.getMessage().lastIndexOf("[") + 1, e.getMessage().lastIndexOf("]") - 1);} catch (Exception ex) {log.error("@Validated截取异常信息失效,已重置,所有异常信息为:{}", e.getMessage());message = ErrorCodeEnum.PARAMETER_FORMAT_ERROR.getMessage();}return BaseResponse.error(ErrorCodeEnum.PARAMETER_FORMAT_ERROR.getCode(), message);
}

http://chatgpt.dhexx.cn/article/cfQqj6Ei.shtml

相关文章

《SpringBoot篇》12.@Valid与@Validated的区别

陈老老老板 说明&#xff1a;工作了&#xff0c;学习一些新的技术栈&#xff0c;边学习边总结&#xff0c;各位一起加油。需要注意的地方都标红了&#xff0c;还有资源的分享. 一起加油。 1.介绍 说明&#xff1a; 其实Valid 与 Validated都是做数据校验的&#xff0c;只不过注…

@NotBlank与@Validated在参数校验时的使用

1. 在实体类(Student.class)对应的字段加上注解&#xff0c;message为需要提示的信息 package com.example.demo.entity;import lombok.Data; import lombok.ToString;import javax.validation.constraints.NotBlank; Data ToString public class Student {private int id;Not…

@Validated和@Valid的用法

后端接口经常需要对入参做校验&#xff0c;比如限制非空、长度、类型等。可以用代码校验&#xff0c;但是这样会比较麻烦&#xff0c;代码看着也比较繁琐。所以对于一些简单的校验&#xff0c;可以用注解的方式&#xff0c;这个时候就会用到Validated或Valid的注解了&#xff0…

@Validated注解不生效问题汇总大全

背景&#xff1a; 项目框架应用的是validation进行检验的&#xff0c;但是最近一直不生效&#xff0c;然后排查了下问题&#xff0c;总结了失效的常见几个原因&#xff1a; 原因1&#xff1a; 在2.3.0版本之前spring-boot-starter-web是集成了validation检验的 但是在2.3.0…

Validated、Valid 、Validator,他们的区别你知道几个

目录 ​ 1. 结论先出 Valid VS Validated 相同点 JSR 380 Valid VS Validated 不同点&#xff1f; Valid和Validated区别 Validator 2. Valid和​​​​​​​Validated 注解 3. 例子 4.使用Valid嵌套校验 5. 组合使用Valid和Validated 进行集合校验 6. 自定义校验…

@Valid 和@Validated 总结

Valid 作用在方法&#xff0c;字段&#xff0c;构造器和参数上 Validated 作用在类 方法 和参数上 Validated 和Valid 配合ModelAttribute 与BindingResult 对对象进行校验 &#xff0c;如果校验不通过&#xff0c;那么错误信息就会封装到BindingResult对象了&#xff0c;可以…

@Validated用法

我们在做请求参数时&#xff0c;往往要对前端传过来的参数进行校验&#xff0c;如果一个个去校验&#xff0c;必然会写大量的代码&#xff0c;所以我们可以使用validated注解来简化我们的校验 查资料的过程中又知道了valid注解 下图是可以在参数上使用的校验注解 validate是…

@Validated的使用

javax.validation的一系列注解可以帮我们完成参数校验,免去繁琐的串行校验 1、首先就是在项目中引入依赖&#xff0c;在SpringBoot中spring-boot-starter-web&#xff08;springbootweb启动器&#xff09;依赖的时候中&#xff0c;内部已经依赖了 hibernate-validator 依赖包 …

@Valid和@Validated注解校验以及异常处理

文章目录 前言一、Valid注解1、源码解析2、所属的包3、参数校验使用注解&#xff08;1&#xff09;空校验&#xff08;2&#xff09;Boolean校验&#xff08;3&#xff09;长度校验&#xff08;4&#xff09;日期校验&#xff08;5&#xff09;数值校验&#xff08;6&#xff0…

别再乱用了,这才是 @Validated 和 @Valid 的真正区别和用法!

概述 Valid是使用Hibernate validation的时候使用Validated是只用Spring Validator校验机制使用 说明&#xff1a;java的JSR303声明了Valid这类接口&#xff0c;而Hibernate-validator对其进行了实现 Validation对Valid进行了二次封装&#xff0c;在使用上并没有区别&#xff0…

【优雅的参数验证@Validated】@Validated参数校验的使用及注解详解——你还在用if做条件验证?

Validated参数校验的使用及注解详解 你还在用if做条件验证吗&#xff1f;一、优雅的参数验证Validated1.Valid和Validated的用法(区别)2.引入并使用Validated参数验证 二、javax.validation.constraints下参数条件注解详解三、自定义条件注解 你还在用if做条件验证吗&#xff1…

@Validated和@Valid的区别

Validated和Valid的区别主要体现在3个方面&#xff1a; 1. 分组 Validated&#xff1a;提供了一个分组功能&#xff0c;可以在入参验证时&#xff0c;根据不同的分组采用不同的验证机制。没有添加分组属性时&#xff0c;默认验证没有分组的验证属性。 实体类&#xff1a; Co…

@Validated注解

一. 在javaEE项目中经常要判断一些字段的格式是否正确。在以前基本上都是用if(啥啥 啥)else(啥啥啥) 。但是在知道Validated之后就开始尝试用这个注解了。不但减轻代码量而 且代码更加的易读规整。 二. 下面就以简单例子来说明。 Controller 层 PostMapping("student&q…

@Valid 和 @Validated 注解用法详解

目录 案例引入 Valid 详解 Validated 详解 Valid 和 Validated 比较 案例引入 下面我们以新增一个员工为功能切入点&#xff0c;以常规写法为背景&#xff0c;慢慢烘托出 Valid 和 Validated 注解用法详解。 那么&#xff0c;首先&#xff0c;我们会有一个员工对象 Emplo…

@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

技术栈&#xff1a; spring boot 2.3.3.RELEASE hibernate-validator 文末附项目源代码 目录 简述 项目依赖 全局异常处理类 基础参数校验 实体类 控制类 测试 嵌套参数验证 实体类 控制类 测试 分组参数验证 接口类 实体类 控制类 测试 Valid和Validated 区…

@Valid与@Validated的区别

1.介绍 说明&#xff1a; 其实Valid 与 Validated都是做数据校验的&#xff0c;只不过注解位置与用法有点不同。 不同点&#xff1a; &#xff08;1&#xff09; Valid是使用Hibernate validation的时候使用。Validated是只用Spring Validator校验机制使用。 &#xff08;2&…

优雅的使用Validated

前言 Validation是一套帮助我们继续对传输的参数进行数据校验的注解&#xff0c;通过配置Validation可以很轻松的完成对数据的约束。 这个技术一直都想进行梳理了很多复杂校验不会使用&#xff0c;本章节用来进行梳理 validated 用于参数的校验&#xff0c;支持简单和复杂(分组…

@Valid与@Validated区别

1.Valid与Validated作用 Valid与Validated都是用来校验接收参数的。Valid是使用Hibernate validation的时候使用Validated是只用Spring Validator校验机制使用说明&#xff1a;java的JSR303声明了Valid这类接口&#xff0c;而Hibernate-validator对其进行了实现。Validated与V…

java中换行符_Java 中的空格符、换行符等怎么表示

展开全部 特殊字符的自表示方法&#xff1a;&#xff1a; 1、\t 空格2113 (\u0009) 2、\n 换行 (\u000A) 3、\\ 反斜杠5261 4、\r 回车 (\u000D) 5、\d 数字4102等价1653于[0-9] 6、\D 非数字等价于[^0-9] 7、\s 空白符号 [\t\n\x0B\f\r] 8、\S 非空白符号 [^\t\n\x0B\f\r] 9、…

java通用文件换行符_java通用文件换行符

java通用文件换行符 [2021-02-07 00:14:46] 简介: java中的换行符是【\n】和【\r】。二者的区别是:【\r】表示回车,【\n】表示新行,但两者都可以实现换行。具体实现方法如:【System.out.print("\n")】。在java中,可以使用\n和\r来 php如何去掉换行符 2020-09-0…