import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* @author 234857 2020-09-23 校验区间值最小值和最大值
*/
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE,
ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = CheckMinMaxValidation.class)
@Documented
@Repeatable(CheckMinMax.List.class)
public @interface CheckMinMax {
String min() default "min";
String max() default "max";
String message() default "{org.hibernate.validator.referneceguide.chapter06.CheckCase.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER,
ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
CheckMinMax[] value();
}
}
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* @author 234857 2020-09-23 校验区间值最小值和最大值
*/
public class CheckMinMaxValidation implements ConstraintValidator<CheckMinMax, Object> {
private String min;
private String max;
@Override
public void initialize(CheckMinMax constraintAnnotation) {
this.min = constraintAnnotation.min();
this.max = constraintAnnotation.max();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
BeanWrapper beanWrapper = new BeanWrapperImpl(value);
long minValue = Long.parseLong(beanWrapper.getPropertyValue(min).toString());
long maxValue = Long.parseLong(beanWrapper.getPropertyValue(max).toString());
return maxValue >= minValue;
}
}