Как я могу проверить два или более полей в комбинации? в методах - PullRequest
0 голосов
/ 08 ноября 2019

Надеюсь, у вас все хорошо.

Сейчас я занимаюсь разработкой пользовательской аннотации для проверки аргументов метода следующим образом:

Интерфейс:

@Target({METHOD})
@Retention(RUNTIME)
@Constraint(validatedBy = ValidarImpl.class)
public @interface Validar {
    public abstract String message() default "ERROR VALIDATION";
    public abstract Class<?>[] groups() default {};
    public abstract Class<? extends Payload>[] payload() default {};
}

Класс:

public class ValidarImpl implements ConstraintValidator<Validar, Object> {

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {

        return false;
    }

}

Реализация аннотации:

@Validar 
public void method1 (@Positive int value, @Valid Car car){}

Я пытаюсьполучить имя параметров и их значение из класса ConstraintValidatorContext с намерением проверить аргументы метода method1 , однако я пока не смог сделать это

Я хотел бы сделать что-то вроде этого: Как я могу проверить два или более полей в комбинации? с методами.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете обратиться к https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/?v=6.1#section-cross-parameter-constraints, чтобы получить более подробную информацию.

Вы можете изменить свой код, как показано ниже:

@SupportedValidationTarget(ValidationTarget.PARAMETERS)
public class ValidarImpl implements
ConstraintValidator < Validar, Object[] > {

    @Override
    public boolean isValid(Object[] value, ConstraintValidatorContext context) {
        if (value.length != 2) {
            throw new IllegalArgumentException("Illegal method signature");
        }

        if (value[0] == null || value[1] == null) {
            return true;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...