Bean Validation 中内置的 constraint:
-
被注释的元素必须为 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(regex=,flag=)
Hibernate Validator 附加的 constraint:
-
验证字符串非null,且长度必须大于0@NotBlank
-
被注释的元素必须是电子邮箱地址@Email
-
被注释的字符串的大小必须在指定的范围内@Length(min=,max=)
-
被注释的字符串的必须非空@NotEmpty
-
被注释的元素必须在合适的范围内@Range(min=,max=,message=)
自定义注解
package com.nf147.ssm.annotation;
import java.lang.annotation.*;
import java.util.Arrays;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Status {
String message() default "没有这个类型,请重新选择";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
class StatusValidator implements ConstraintValidator<Status,String>{
@Override
public void initialize(Status constraintAnnotation) {
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { //判断传入的值 s 是否是集合里的值
return Arrays.asList("create","shop").contains(s);
}
}