在日常开发过程中,我们会写一些注解⽤于加在java的实体类属性字段上,或者放到controller层的方法参数中,在进⾏请求或请求的时候会根据字段的注解进⾏对应的校验,简化校验相关的代码。
当校验不通过时,会返回对应的message描述

例1:注解写在Controller层的接口参数中

Java 注解 NotBlank 无效 notnull注解原理_开发语言


例2:注解写在实体中

Java 注解 NotBlank 无效 notnull注解原理_Java 注解 NotBlank 无效_02


当这些注解不生效时,解决方案如下:

1、当@NotNull等注解写在实体类中时,需要在Controller接口的方法参数加入@Valid注解,如下图所示:

Java 注解 NotBlank 无效 notnull注解原理_字段_03


2、当@NotNull等注解写在Controller层的接口参数中时,需要在该方法的Controller类上添加@Validated,如下图所示:

Java 注解 NotBlank 无效 notnull注解原理_字段_04

备注:除@NotNull之外的其他校验相关的注解

//被注释的元素必须为null
@Null  
//被注释的元素不能为null
@NotNull  
//被注释的元素必须为true
@AssertTrue  
//被注释的元素必须为false
@AssertFalse  
//被注释的元素必须是⼀个数字,其值必须⼤于等于指定的最⼩值
@Min(value)  
//被注释的元素必须是⼀个数字,其值必须⼩于等于指定的最⼤值
@Max(value)  
//被注释的元素必须是⼀个数字,其值必须⼤于等于指定的最⼩值
@DecimalMin(value)  
//被注释的元素必须是⼀个数字,其值必须⼩于等于指定的最⼤值
@DecimalMax(value)  
//被注释的元素的⼤⼩必须在指定的范围内。
@Size(max,min) 
//被注释的元素必须是⼀个数字,其值必须在可接受的范围内
@Digits(integer,fraction) 
//被注释的元素必须是⼀个过去的⽇期
@Past  
//被注释的元素必须是⼀个将来的⽇期
@Future  
//被注释的元素必须符合指定的正则表达式。
@Pattern(value) 
//被注释的元素必须是电⼦邮件地址
@Email 
//被注释的字符串的⼤⼩必须在指定的范围内
@Length 
//被注释的字符串必须⾮空
@NotEmpty  
//被注释的元素必须在合适的范围内
@Range