Как найти целевой уровень, к которому применяется аннотация в пользовательском валидаторе javax - PullRequest
0 голосов
/ 15 октября 2018

Реализую пользовательский валидатор для сервисного вызова.Как часть этого у меня есть ниже аннотация.

@Target({ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MyAnnotationValidator.class})
public @interface MyAnnotation {

}

Я могу применить вышеупомянутую аннотацию к типу элемента поля или параметра.Вызов аннотации в любом параметре или поле закончился бы моим классом проверки ограничений.

Логика проверки одинакова для обоих типов элементов.Но в случае неудачи проверки мне нужно отправить разные сообщения для обоих элементов.

В случае неудачи проверки параметра мне нужно сказать «проверка параметра не удалась», в другом случае мне нужно сказать «Проверка поля не удалась".

Есть ли какой-либо способ узнать, от какого типа элемента достиг валидатор вызова проверки.

Решение, которое у меня есть, - отправить пользовательский атрибут с аннотацией, чтобы указать, откудаэто называется.Примерно так.

@MyAnnotation("Parameter") or @MyAnnotation("Field").

Нужно знать, есть ли эффективный способ выполнить эту операцию.Пожалуйста, дайте мне знать, если требуется дополнительная информация.

Спасибо

1 Ответ

0 голосов
/ 15 октября 2018

Я могу подтвердить, что сейчас нет хорошего способа сделать это.

Интересно, стоит ли нам что-то выставлять в HibernateConstraintValidatorContext.Я подумаю об этом.

...