Вам нужна пользовательская аннотация 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;
}
}
Затем пометьте свой YourDto
класс @RangeCheck
:
@RangeCheck(message = "your messgae")
public class YourDto {
// from
// to
}
Или просто вручную подтвердите соотношение двух полей.