@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. * <p> * Constraints defined on the object and its properties are be validated when the * property, method parameter or method return type is validated. * <p> * 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;