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