Sha*_*oor 6 java validation javax
关于 javax.validation
@NotNull(message = "From can't be null")
@Min(value = 1, message = "From must be greater than zero")
private Long from;
@NotNull(message = "To can't be null")
@Min(value = 1, message = "To must be greater than zero")
private Long to;
Run Code Online (Sandbox Code Playgroud)
我还想验证FROM应该小于TO并且TO应该大于FROM?我们如何使用 javax 验证的注释来做到这一点?
你需要定制cross field validation注释。
一种方法是用注释您的自定义类@YourCustomAnnotation。
YourCustomAnnotationValidator您可以访问您的值,因此您可以在那里实现您的逻辑:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Constraint(validatedBy = DateValidator.class)
public @interface RangeCheck {
String message();
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class RangeCheckValidtor implements ConstraintValidator<RangeCheck, YourDto> {
@Override
public void initialize(RangeCheck date) {
// Nothing here
}
@Override
public boolean isValid(YourDto dto, ConstraintValidatorContext constraintValidatorContext) {
if (dto.getFrom() == null || dto.getTo() == null) {
return true;
}
return from < to;
}
}
Run Code Online (Sandbox Code Playgroud)
然后YourDto用以下标记你的班级@RangeCheck:
@RangeCheck(message = "your messgae")
public class YourDto {
// from
// to
}
Run Code Online (Sandbox Code Playgroud)
或者简单地手动验证两个字段的关系。