您当前的位置: 首页 > 

@NotNull、@NotEmpty、@NotBlank的区别

发布时间:2021-07-26 16:51:33 ,浏览量:0

@NotEmpty用在集合类

@NotBlank 用在String

@NotNull 用在基本类型

源码 @NotEmpty
package javax.validation; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; /**
 * Marks a property, method parameter or method return type for validation cascading.
 *
		

* Constraints defined on the object and its properties are be validated when the * property, method parameter or method return type is validated. *

* This behavior is applied recursively. * * @author Emmanuel Bernard * @author Hardy Ferentschik */ @Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented public @interface Valid { }

加了@NotEmpty的String类、Collection、Map、数组,是不能为null并且长度必须大于0的(String、Collection、Map的isEmpty()方法)。

@NotBlank
/** Validate that the annotated string isnot {@code null} or empty.  The difference to {@code NotEmpty}is that trailing whitespaces are getting ignored. @author Hardy Ferentschik 
***/ @Documented @Constraint(validatedBy = { }) @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR,PARAMETER }) @Retention(RUNTIME) @ReportAsSingleViolation @NotNull public @interface NotBlank { String message() default "{org.hibernate.validator.constraints.NotBlank.message}"; 

@NotBlank用于String类型

和 @NotEmpty不同的是,尾部空格被忽略,也就是说,纯空格的String也是不符合规则的。所以才会说@NotBlank用于String,只能作用在String上,不能为null,而且调用trim()后,长度必须大于0。

(“test”) 即:必须有实际字符

@NotNull
/***  The annotated element must not be {@code null}. Accepts any type. 
@author Emmanuel Bernard 
**/ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented @Constraint(validatedBy = { }) public @interface NotNull { String message() default "{javax.validation.constraints.NotNull.message}"; Class<?>[] groups() default { }; 

这个就很好理解了,不能为null,但可以为empty。

examples:

1.String name = null; @NotNull: false @NotEmpty:false
@NotBlank:false

2.String name = ""; @NotNull:true
@NotEmpty: false @NotBlank: false 3.String name = " "; @NotNull: true @NotEmpty: true @NotBlank: false 4.String name = "Great answer!"; @NotNull: true @NotEmpty:true
@NotBlank:true

附上一个使用例子:

@NotBlank(message = "startTime must not be null") private String startTime; @NotBlank(message = "endTime must not be null") private String endTime; @NotNull(message = "areaType must not be null") private Integer areaType; @NotBlank(message = "userId must not be null") private String userId; 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0997s