1.常用注解
注解 | 描述 |
---|---|
@NotNull | 值不能为空 |
@Null | 值必须为空 |
@Pattern(regex=) | 字符串必须匹配正则表达式 |
@Size(min=,max=) | 集合的元素数量必须在min和max之间 |
@CreditCardNumber(ignoreNonDigitCharacters=) | 字符串必须是信用卡号(美国标准) |
字符串必须是Email地址 | |
@Length(min=,max=) | 字符串长度必须在min和max之间 |
@NotBlank | 字符串必须有字符 |
@NotEmpty | 字符串不为null,集合有长度 |
@Range(min=,max=) | 数字必须大于等于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=) | 数字格式检查,interger值整数部分的最大长度,fraction指小数部分的最大长度 |
@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 里面指定执行验证逻辑的类
- 里面必须包含这三个内容
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等来进行注入
2.3 使用
- 在对于的字段上加上注解,和@NotBlank使用一样
@Password(message = "密码不符合要求")
private String password;
-
但愿测试结果