@NotEmpty、@NotBlank、@NotNull的区别

在网上搜索的内容,大致如下:

验证框中@NotEmpty、@NotBlank、@NotNull乍一看还是容易弄混的。主要使用情况记录一下:
@NotEmpty 用在集合类上面
@NotBlank 用在String上面
@NotNull    用在基本类型上

只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释:
1. @NotEmpty

代码如下:

/**
* Asserts that the annotated string, collection, map or array is not {@code null} or empty.
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
*/

也就是说,加了@NotEmpty的String类、Collection、Map、数组,是不能为null或者长度为0的(String、Collection、Map的isEmpty()方法)。

2. @NotBlank

代码如下:

/**
* Validate that the annotated string is not {@code null} or empty.
* The difference to {@code NotEmpty} is that trailing whitespaces are getting ignored.
*
* @author Hardy Ferentschik
*/

“The difference to {@code NotEmpty} is that trailing whitespaces are getting ignored.” –>

和{@code NotEmpty}不同的是,尾部空格被忽略,也就是说,纯空格的String也是不符合规则的。所以才会说@NotBlank用于String。

3. @NotNull

代码如下:

/**
* The annotated element must not be {@code null}.
* Accepts any type.
*
* @author Emmanuel Bernard
*/

这个就很好理解了,不能为null。

(0)

相关推荐

  • @NotEmpty、@NotBlank、@NotNull的区别

    在网上搜索的内容,大致如下: 验证框中@NotEmpty.@NotBlank.@NotNull乍一看还是容易弄混的.主要使用情况记录一下: @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull    用在基本类型上 只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释: 1. @NotEmpty 复制代码 代码如下: /** * Asserts that the annotated string, collection,

  • Spring Boot用户注册验证的实现全过程记录

    目录 1. 概述 2. 创建User DTO Object 3. 实现一个注册Controller 4. 验证注册数据 4.1 内置的验证 4.2 自定义验证以检查电子邮件的有效性 4.3 使用自定义验证来确认密码 4.4 检查该账户是否已经存在 5. 持久化处理 6. 安全登录 6.1 自定义UserDetailsService 6.2 开启New Authentication Provider 7. 结语 1. 概述 在这篇文章中,我们将使用Spring Boot实现一个基本的邮箱注册账户以

  • 如何解决@NotBlank不生效的问题

    解决@NotBlank不生效 在项目开发中,发现一个类中包含有另外一个类,这种包含关系的类上的@NotBlank校验不生效,后来发现需要在内部的类的域上加上@Valid注解,如下: /** * 标签体系ID */ @NotBlank(message = "00000002") @Length(max = 20, message = "00000005") private String systemId; /** * 条件模板id */ private String

  • 解决@Validated注解无效,嵌套对象属性的@NotBlank无效问题

    目录 @Validated注解无效,嵌套对象属性的@NotBlank无效 步骤 内层对象无法验证 @Validated注解不生效问题.如何使用 1.需要引入的包 2.将@Validated打在controller中需要验证的实体类前面 3.在具体实体类中定义字段的验证规则 4.数据格式校验 在controller中的方法中进行单个参数校验注意事项 @Validated注解无效,嵌套对象属性的@NotBlank无效 最近在做的公司项目是一个表单系统,刚好要用到@Validated注解来对表单字段进

  • SpringMVC实现表单验证功能详解

    本章节内容很丰富,主要有基本的表单操作,数据的格式化,数据的校验,以及提示信息的国际化等实用技能. 首先看效果图 项目结构图 接下来用代码重点学习SpringMVC的表单操作,数据格式化,数据校验以及错误提示信息国际化.请读者将重点放在UserController.java,User.java,input.jsp三个文件中. maven 项目必不可少的pom.xml文件.里面有该功能需要的所有jar包. <?xml version="1.0" encoding="UTF

  • SpringBoot之groups应对不同的Validation规则自定义方式

    目录 groups应对不同的Validation规则自定义 groups 定义Maker接口 定义实体Bean 定义使用实体Bean服务 单元测试 小结一下 Validation参数校验 详解自定义注解规则和分组校验 内置校验注解 分组校验 递归校验 自定义校验 校验流程解析 groups应对不同的Validation规则自定义 groups 如果同一个规则,在不同场景下,或许执行不同的验证逻辑,在这种情况下,该如何来处理呢?本节将基于groups字段来实现灵活的验证. 这个groups是各类V

  • @Validated和@Valid三种异常捕获处理方式

    目录 @Validated和@Valid异常捕获 异常共三种 @Valid和@Validated区别 注解位置 @Validated和@Valid异常捕获 异常共三种 BindException:表单提交有效,对于以json格式提交将会失效 MethodArgumentNotValidException:前段以json格式有效 ConstraintViolationException :参数上加@RequestParam或参数加@NotBlank @NotNull等 @Valid和@Valida

  • Spring Validation方法实现原理分析

    最近要做动态数据的提交处理,即需要分析提交数据字段定义信息后才能明确对应的具体字段类型,进而做数据类型转换和字段有效性校验,然后做业务处理后提交数据库,自己开发一套校验逻辑的话周期太长,因此分析了Spring Validation的实现原理,复用了其底层花样繁多的Validator,在此将分析Spring Validation原理的过程记录下,不深入细节 如何使用Spring Validation Spring Bean初始化时校验Bean是否符合JSR-303规范 1.手动添加BeanVali

  • 使用@Validated 和 BindingResult 遇到的坑及解决

    @Validated和BindingResult 使用遇到的坑 @Validated 与BindingResult 需要相邻,否则 变量result 不能接受错误信息 控制台输出 Field error in object 'entity' on field '变量': rejected value [null]; codes [NotNull.entity.变量,NotNull.变量,NotNull.java.lang.String,NotNull]; arguments [org.sprin

  • spring jpa集成依赖的环境准备及实体类仓库编写教程

    目录 一.SpringBoot集成Hibernate JPA的依赖 二.环境准备 1.配置文件 2.创建data.sql和schema.sql 三.实体类 四.编写仓库 1.代码编写 2.CRUD基础操作 3.稍微复杂操作 4.更复杂一点的操作 一.SpringBoot集成Hibernate JPA的依赖 compile( //hibernate 'org.springframework.boot:spring-boot-starter-data-jpa', 'org.hibernate:hib

随机推荐