1.常用注解
注解 | 描述 |
---|---|
@NotNull | 值不能為空 |
@Null | 值必須為空 |
@Pattern(regex=) | 字符串必須匹配正則表達(dá)式 |
@Size(min=,max=) | 集合的元素數(shù)量必須在min和max之間 |
@CreditCardNumber(ignoreNonDigitCharacters=) | 字符串必須是信用卡號(美國標(biāo)準(zhǔn)) |
字符串必須是Email地址 | |
@Length(min=,max=) | 字符串長度必須在min和max之間 |
@NotBlank | 字符串必須有字符 |
@NotEmpty | 字符串不為null塞祈,集合有長度 |
@Range(min=,max=) | 數(shù)字必須大于等于min追他,小于等于max |
@SafeHtml | 字符串是安全的html |
@Url | 字符串是合法的Url |
@AssertFalse | 值必須是false |
@AssertTrue | 值必須是true |
@DecimalMax(value=,inclusive=) | 值必須小于等于(inclusive=true),小于(inclusive=false),可以注解在字符串屬性上 |
@DecimalMin(value=,inclusive=) | 值必須大于等于(inclusive=true),大于(inclusive=false),可以注解在字符串屬性上 |
@Digits(interger=,fraction=) | 數(shù)字格式檢查,interger值整數(shù)部分的最大長度翘狱,fraction指小數(shù)部分的最大長度 |
@Future | 值必須是未來的日期 |
@Past | 值必須是過去的日期 |
@Max(value=) | 值必須小于等于value的值,不能注解在字符串上 |
@Min(value=) | 值必須大于等于value的值额各,不能注解在字符串上 |
2.自定義驗證注解
一個簡單的密碼驗證的例子
2.1 定義注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint( validatedBy = PasswordConstraint.class)
public @interface Password {
String message() default "密碼錯誤";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
- @Constraint 里面指定執(zhí)行驗證邏輯的類
- 里面必須包含這三個內(nèi)容
String message() default "密碼錯誤";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
2.2 定義驗證器
public class PasswordConstraint implements ConstraintValidator<Password,String> {
@Override
public void initialize(Password password) {
}
@Override
public boolean isValid(String password, ConstraintValidatorContext constraintValidatorContext) {
//簡單驗證密碼長度為6到30位
if(StringUtils.isEmpty(password)||password.length()<6||password.length()>30){
return false;
}
return true;
}
}
- 繼承自
ConstraintValidator<Password,String>
,Password指定注解的類型茧吊,String指定的是驗證字段的值的類型 - 這里可以使用 @Autowired等引入其他的Bean
- 這里不需要使用@Compent等來進(jìn)行注入
2.3 使用
- 在對于的字段上加上注解称开,和@NotBlank使用一樣
@Password(message = "密碼不符合要求")
private String password;
-
但愿測試結(jié)果