validation註解及自定義註解

Bean Validation 中內置的 constraint:java

  • @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:git

  • @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); } }

 

 以後,在實體類對於指端上加上 @Status 就能夠了ide

相關文章
相關標籤/搜索