自定义注解

1、先上代码(定义注解)

1
2
3
4
5
6
7
8
9
10
@Constraint(validatedBy = DecimalValidator.class) //具体的实现
@Target( { java.lang.annotation.ElementType.METHOD,
java.lang.annotation.ElementType.FIELD })
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Documented
public @interface IsDecimal {
java.lang.String message() default "";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}

2、实现代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class DecimalValidator implements ConstraintValidator<IsDecimal, Map<String,Object>> {
String pointPrefix = "(\\-|\\+){0,1}\\d*\\.\\d+";// 浮点数的正则表达式-小数点在中间与前面
String pointSuffix = "(\\-|\\+){0,1}\\d+\\.";// 浮点数的正则表达式-小数点在后面
String pointPrefixWithoutPoint = "\\-{0,1}\\d+";// 整数的正则表达式
@Override
public void initialize(IsDecimal constraintAnnotation) {
}
public boolean isValid(Map<String,Object> map, ConstraintValidatorContext arg1) {
String value = (String)map.get(Constants.KEY);
if (StringUtils.isEmpty(value) && (boolean)(map.get(Constants.REQUIRED)))
return false;
return value.matches(pointPrefix) || value.matches(pointSuffix) || value.matches(pointPrefixWithoutPoint);
}
}

解析

1、

Share