проверка Javax больше или меньше, чем из другого свойства - PullRequest
0 голосов
/ 24 мая 2018

относительно 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;

Я также хочу подтвердить, что ОТ должно быть меньше ДО и ДО должно быть больше ОТ ?Как мы можем сделать это, используя аннотацию проверки Javax?

1 Ответ

0 голосов
/ 24 мая 2018

Вам нужна пользовательская аннотация 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
}

Или просто вручную подтвердите соотношение двух полей.

...