spring注解 @Valid 的作用说明
目录
- spring注解 @Valid 的作用
- 在userRequest类中的属性上使用spring的注解
- spring注解 @Valid 作用范围
- 建立两个基本类
- 建立一个请求
- 实验测试
- 修改UserRequest(对users加入@Valid)
- 再次发送请求
- 可以看到Valid生效,此时加上name的值
spring注解 @Valid 的作用
在controller中的方法上面写有注解@Valid UserRequest 的作用。
备注:这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常,BindingResult是springmvc的一个验证框架。
是对该UserRequest 实体进行校验,
在userRequest类中的属性上使用spring的注解
spring注解 @Valid 作用范围
@Valid只作用于当前类的基本类型,不能作用引用类型
建立两个基本类
@Data @AllArgsConstructor @NoArgsConstructor public class NewUser { @NotEmpty private String name; @NotEmpty private String password; }
@Data public class UserRequest { @NotEmpty private String groupName; private List<NewUser> users; }
建立一个请求
@RequestMapping(path = {"/ValidTest"}) public String Valid(@Valid @RequestBody UserRequest userRequest) { System.out.println(userRequest); return "valid test"; }
实验测试
可以看到类NewUser里面的@NotEmpty并未生效。
修改UserRequest(对users加入@Valid)
@Data public class UserRequest { @NotEmpty private String groupName; @Valid private List<NewUser> users; }
再次发送请求
可以看到Valid生效,此时加上name的值
综上,@Valid 作用的类中有其他类时,需要逐层加上@Valid
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
关于@Valid注解大全以及用法规范
目录 @Valid注解大全及用法规范 @Valid注解规范用户请求的参数 业务场景 业务出现的问题 优化的解决方案 @Valid注解大全及用法规范 注解 描述 @AssertFalse 带注解的元素必须为false,支持boolean/Boolean @AssertTrue 带注解的元素必须为true,支持boolean/Boolean @DecimalMax 带注解的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin 带注解的元素必须是一个数字,其值必须大于等于指定的最小
-
解决@Validated注解无效,嵌套对象属性的@NotBlank无效问题
目录 @Validated注解无效,嵌套对象属性的@NotBlank无效 步骤 内层对象无法验证 @Validated注解不生效问题.如何使用 1.需要引入的包 2.将@Validated打在controller中需要验证的实体类前面 3.在具体实体类中定义字段的验证规则 4.数据格式校验 在controller中的方法中进行单个参数校验注意事项 @Validated注解无效,嵌套对象属性的@NotBlank无效 最近在做的公司项目是一个表单系统,刚好要用到@Validated注解来对表单字段进
-
参数校验Spring的@Valid注解用法解析
参数校验Spring的@Valid注解 @Valid 注解通常用于对象属性字段的规则检测. 以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解. 那么,首先,我们会有一个员工对象 Employee,如下 : public class Employee { /** 姓名 */ public String name; /** 年龄 */ public Integer age; public String getName() { return name; } publ
-
@validated注解异常返回JSON值方式
目录 @validated注解异常返回JSON值 使用@Valid注解,对其参数错误异常的统一处理 @validated注解异常返回JSON值 @ControllerAdvice public class ValidParamExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody public Map<String, Object> allExceptionHandler(Exception e){
-
快速校验实体类时,@Valid,@Validated,@NotNull注解无效的解决
目录 校验实体类参数内容不能为空时使用注解校验无效 使用@valid注解首先引入依赖 1.更换方法入参类型 2.错误内容过多 3.使用对象接收错误内容,按自己要求输出 springboot 校验机制 @Validated @Valid 1.探究原因 2.使用@Validated 实现校验机制 3.使用@Valid 实现校验机制 校验实体类参数内容不能为空时使用注解校验无效 使用@valid注解首先引入依赖 如果是SpringBoot项目,引入web开发包,就不需要再单独引入@valid依赖了.因
-
一次踩坑记录 @valid注解不生效 排查过程
一.背景 在进行一次Controller层单测时,方法参数违反Validation约束,发现却没有抛出预期的[违反约束]异常. 方法参数上的@Valid注解不生效?? 但是以Tomcatweb容器方式启动,请求该API,@Valid注解却生效了,甚是怪异. 代码如下: @RestController @RequestMapping("/api/user/") public class UserController @RequestMapping(value = ""
-
使用注解@Validated和BindingResult对入参进行非空校验方式
目录 注解@Validated和BindingResult对入参非空校验 @Validated 和 BindingResult 使用遇到的坑 注解@Validated和BindingResult对入参非空校验 在项目当中少不了入参校验,服务器和浏览器互不信任,不能因为前端加入参判断了后台就不处理了,这样是不对的. 比如前台传过来一个对象作为入参参数,这个对象中有些属性允许为空,有些属性不允许为空.那么你还在使用if()else{}进行非空判断吗?不妨尝试下使用注解,可以使用@Validated和
-
spring注解 @Valid 的作用说明
目录 spring注解 @Valid 的作用 在userRequest类中的属性上使用spring的注解 spring注解 @Valid 作用范围 建立两个基本类 建立一个请求 实验测试 修改UserRequest(对users加入@Valid) 再次发送请求 可以看到Valid生效,此时加上name的值 spring注解 @Valid 的作用 在controller中的方法上面写有注解@Valid UserRequest 的作用. 备注:这里一个@Valid的参数后必须紧挨着一个Binding
-
spring注解之@Valid和@Validated的区分总结
目录 @Valid: @Validated: 1.分组 2.组序列 3.验证多个对象 补充:主要区别 总结 @Valid: @Valid注解用于校验,所属包为:javax.validation.Valid. ① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Girl类中的属性): @Min(value = 18,message = "未成年禁止入内") private Integer age; ② 其次在controller层的方法的要校验的
-
详解Spring中@Valid和@Validated注解用法
目录 案例引入 @Valid 详解 @Validated 详解 @Valid 和 @Validated 比较 案例引入 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 和 @Validated 注解用法详解. 那么,首先,我们会有一个员工对象 Employee,如下 : /** * 员工对象 * * @author sunnyzyq * @since 2019/12/13 */ public class Employee { /** 姓名 */ public St
-
JavaWeb Spring注解Annotation深入学习
一.注解 注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息.跟注释不同的是,注释是给我们看的,java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制去读取注解中的信息.注解使用关键字@interface,继承java.lang.annotition.Annotition 1.javaSE中的注解 先举个例子来回顾一下在javaSE中注解是什么东东,关键是两点,注解的定义与如何通过反射得到注解上面的信息. 1.先定义两个注解一个是在类上有注解
-
详解Spring注解--@Autowired、@Resource和@Service
什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低 2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率 为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java
-
spring 注解验证@NotNull等使用方法
本文介绍了spring 注解验证@NotNull等使用方法,分享给大家,具体如下: 常用标签 @Null 被注释的元素必须为null @NotNull 被注释的元素不能为null @AssertTrue 被注释的元素必须为true @AssertFalse 被注释的元素必须为false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value)
-
Spring注解解析之@ImportResource
一.ImportResource 1.1 定义包和类 首先定义一个不会被ComponentScan扫描到的包outpackage,如下: 在该包内创建一个类: package outpackage; import org.springframework.stereotype.Service; @Service public class HelloService1 { public void method1() { System.out.println("class:HelloService1__
-
Spring注解@Qualifier的详细用法你知道几种
环境:springboot2.3.10 一般使用在项目中使用@Qualifier来限定注入的Bean. 由于项目中我习惯用@Resource注解,所以这里先对@Autowired和@Resource进行个简单的说明. @Autowired和@Resource区别 相同点: @Autowired与@Resource都可以用来装配Bean.都可以写在字段上,或写在setter方法上. 区别: 1.@Autowired(Spring注解) 默认按类型装配,默认情况下必须要求依赖对象必须存在(不存在会报
-
@Transactional注解不起作用的原因分析及解决
目录 Transactional失效场景介绍 第一种 第二种 第三种 @Transactional注解不起作用原理分析 第一种 不创建代理对象 不进行代理调用 第二种 第三种 Transactional失效场景介绍 第一种 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用.例如以下代码. 定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法 /** * @author zhoujy * @date 2018年12
随机推荐
- JavaScript调用传递变量参数的相关问题及解决办法
- 解决MySQL因不能创建临时文件而导致无法启动的方法
- java使用CKEditor实现图片上传功能
- datagrid和repeader控件中替换标识值的方法
- Python中的一些陷阱与技巧小结
- Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
- C#预定义数据类型之值类型和引用类型介绍
- php 中文和编码判断代码
- 原生js实现倒计时功能(多种格式调用)
- js动态创建表格,删除行列的小例子
- 浅析jquery的js图表组件highcharts
- 微信小程序 密码输入(源码下载)
- 深入浅析SQL封装、多态与重载
- javascript中的void运算符语法及使用介绍
- 一网打尽WinXP系统安全实用技巧
- java.exe和javaw.exe的区别及使用方法
- 浅谈hibernate中多表映射关系配置
- Java中十进制和十六进制的相互转换方法
- Android招聘面试题解答
- C#实现根据实体类自动创建数据库表