@Valid注解用于校验,用于验证注解是否符合要求,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。

所属包为:javax.validation.Valid

第一步:首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Teacher类中的属性)

import javax.validation.constraints.Min;public class Teacher {@Min(value = 18,message = "年龄不合法")private Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

第二步:在controller层的方法的要校验的参数上添加@Valid注解,并且需要传入BindingResult对象,用于获取校验失败情况下的反馈信息,如下代码:

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.validation.Valid;@Controller
@RequestMapping
public class TeacherController {@PostMapping("/teacher")@ResponseBodypublic void addTeacher(@RequestBody @Valid Teacher teacher, BindingResult bindingResult) {if(bindingResult.hasErrors()){System.out.println(bindingResult.getFieldError().getDefaultMessage());}}
}

注意:bindingResult.getFieldError.getDefaultMessage()用于获取相应字段上添加的message中的内容,如:@Min注解中message属性的内容

例如:@NotBlank注解

@Data
public class User {private String id;  @NotBlank(message = "密码不能为空")private String password;
}

@NotBlank 注解所指的 password 字段,表示验证密码不能为空,如果为空的话,上面 Controller 中的 create 方法会将message 中的"密码不能为空"返回。

限制   说明
@Null  限制只能为null
@NotNull   限制必须不为null
@AssertFalse   限制必须为false
@AssertTrue    限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction)  限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future    限制必须是一个将来的日期
@Max(value)    限制必须为一个不大于指定值的数字
@Min(value)    限制必须为一个不小于指定值的数字
@Past  限制必须是一个过去的日期
@Pattern(value)    限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Past  验证注解的元素值(日期类型)比当前时间早
@NotEmpty  验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank  验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

@Valid注解的使用相关推荐

  1. notempty注解属于哪个依赖_Spring框架 之@Valid注解的使用(嵌套类型的效验)

    @Valid注解可以实现数据的验证,你可以定义实体,在实体的属性上添加校验规则,而在API接收数据时添加@valid关键字,这时你的实体将会开启一个校验的功能. @Valid 注解类型的使用: @Nu ...

  2. SpringBoot 中使用 @Valid 注解 + Exception 全局处理器优雅处理参数验证

    作者:超级小豆丁 http://www.mydlq.club/article/49/ 目录 一.为什么使用 @Valid 来验证参数 二.@Valid 注解的作用 三.@Valid 的相关注解 四.使 ...

  3. @Valid注解的使用(转)

    原文地址:http://blog.csdn.net/xzmeasy/article/details/76098188 @Valid注解用于校验,所属包为:javax.validation.Valid. ...

  4. @Valid 注解详解 Java Bean Validation的前世今生

    Spring @Valid 注解 校验实体属性 1 @Valid 介绍 1.1 前言 1.2 Bean Validation 1.3 关于validation包 1.3 关于Spring Hibern ...

  5. @Valid注解不生效

    @Valid注解不生效 问题 解决办法 1.方法一 2.方法二 环境:JDK8 + Spring Boot2 + Maven 问题原因:导入包有问题或依赖包版本不对 问题 <dependency ...

  6. SpringBoot从入门到精通教程(二十七)- @Valid注解用法详解+全局处理器Exception优雅处理参数验证用法

    问题痛点 用 Spring 框架写代码时,写接口类,相信大家对该类的写法非常熟悉.在写接口时要写效验请求参数逻辑,这时候我们会常用做法是写大量的 if 与 if else 类似这样的代码来做判断,如下 ...

  7. springboot @Valid 注解用法详解

    @Valid 注解通常用于对象属性字段的规则检测,具体啥意思,下面让我娓娓道来: 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解. 那么,首先,我们会有一 ...

  8. @Validated注解和@Valid注解区别

    @Validated注解和@Valid注解详解 引入依赖 @Validated注解和@Valid注解区别 @Valid注解使用场景演示 嵌套校验和controller层请求参数校验 @Valid注解校 ...

  9. @Valid注解使用

    为何使用@Valid注解 对于输入数据的校验是常见的必须工作,像数据库数据输入校验(jpa的实体类注解校验).而在后端实体数据流转时校验也可以采用Spring的@Valid注解,使用方法是在校验区域参 ...

最新文章

  1. 通信测试:5G 时代的“卖水人”
  2. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月
  3. a标签中href=javacript:; href=javacript:void(0); href=#区别
  4. 6 不更新无法使用_win10更新后无线网络无法使用
  5. firefox ie table 布局 兼容性问题
  6. html内联框上下重叠,如何解决IOS端两个内联块元素无法上下对齐的问题?
  7. OpenCV C++ 10 - Invert Images
  8. Linux下对网络进行配置nmcli、nmtui
  9. 使用CodeFirst创建并更新数据库
  10. echarts tooltip被遮挡_echarts 的tooltip定位到当前图,避免溢出和遮挡
  11. Altium Designer20 PCB板子绘制
  12. java rhino 运行 js_java 脚本引擎Rhino执行js代码和文件
  13. System.Timers.Timer 与 System.Threading.Timer 小间隔
  14. WinHttp用法(WinHttp.WinHttpRequest.5.1方法,属性)
  15. vue项目实现百度离线地图开发
  16. Linux多进程间通信——管道通信实现
  17. Spark MLlib特征处理:MinMax最大最小值区间缩放---原理及实战
  18. 【VC++游戏开发#六】2D篇 —— 粒子系统(一):浪漫唯美的场景之雪花飞舞
  19. 荣耀60和荣耀x30max哪个好
  20. 初学古琴怎么学?古琴入门基础知识

热门文章

  1. 2020,人工智能与产业结合的新纪年,你需要哪些能力可以脱颖而出?
  2. 送给程序员的 编程箴言
  3. Prompt | 从CLIP到CoOp,Visual-Language Model新范式
  4. linux把集群中所有机器关闭,Hadoop集群(第5期)_Hadoop安装配置
  5. windows删文件:找不到该项目,该项目不在xx中,请确认位置,然后重试 的解决方案
  6. 机器学习第一回——初识监督学习和无监督学习
  7. 使用webpack引入sass全局变量
  8. Google code android开源项目(五)
  9. Spring注解驱动开发-----容器day01
  10. Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)