天天看點

validation注解及自定義注解Bean Validation 中内置的 constraint:

Bean Validation 中内置的 constraint:

  • @Null

     被注釋的元素必須為 null
  • @NotNull

     被注釋的元素必須不為 null
  • @AssertTrue

     被注釋的元素必須為 true
  • @AssertFalse

     被注釋的元素必須為 false
  • @Min(value)

     被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
  • @Max(value)

     被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
  • @DecimalMin(value)

     被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
  • @DecimalMax(value)

     被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
  • @Size(max=, min=)

     被注釋的元素的大小必須在指定的範圍内
  • @Digits(integer, fraction)

     被注釋的元素必須是一個數字,其值必須在可接受的範圍内
  • @Past

     被注釋的元素必須是一個過去的日期
  • @Future

     被注釋的元素必須是一個将來的日期
  • @Pattern(regex=,flag=)

     被注釋的元素必須符合指定的正規表達式

Hibernate Validator 附加的 constraint:

  • @NotBlank

     驗證字元串非null,且長度必須大于0
  • @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);
    }
}
           

繼續閱讀