Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Сопоставление конкретного валидатора ограничения с конкретным ContraintViolationException в Джерси

Автор вопроса: LunayoОтветов: 1

Я пытаюсь создать собственный валидатор и сопоставить его с определенным ограничениемViolationException. Причина в том, что я хочу создать другое пользовательское исключение для другого ограничения. Например, если пользователь не найден в базе данных, срабатывает исключение not found abuseException, а если пользователь имеет недопустимое имя пользователя, вместо этого будет выполнено исключение bad response failureException.

@Retention(RUNTIME)
@Target({ FIELD, METHOD })
@Constraint(validatedBy = UserNotValidValidator.class)
public @interface UserIsValid { ... }

отображается в

public class ConstraintExceptionMapper implements
    ExceptionMapper<ConstraintViolationException> {
   public Response toResponse(ConstraintViolationException e) { ... }
}

Чтобы быть более конкретным, вопрос заключается в том, поддерживает ли валидатор hibernate bean-компонента множественный преобразователь исключений ограничений.

  • Наткнулся на нечто подобное здесь github.com/42BV/jarb Karthik 29.11.2013

javahibernatejax-rsbean-validation

Ответы

Ответ 1 · рейтинг 2 · Gunnar

Преобразователи исключений - это концепция JAX-RS, а не проверки компонентов. Вы должны создать один сопоставитель исключений для ConstraintViolationException и заставить его создавать разные ответы на основе нарушений, содержащихся в данном исключении нарушения. Например. вы можете проверить нарушенный тип ограничения с помощью `ConstraintViolation.getConstraintDescriptor().getAnnotation().annotationType().

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы