Повторное подтверждение Resteasy Bean снова не вызывается

1

Мой вопрос похож на валидацию Resteasy Bean Not Being Invoked. Однако решения там не работают.

Я использую Resteasy 3.0.9.Final с resteasy-validator-provider-11 в моем пом. Я запускаю все это, используя специальный класс Jetty.

Странно, валидация отлично работает на @PathParams, но не на бобах.

@POST
@Path("/foo/{myParam}")
public Message post(MyBean myBean, @PathParam("myParam") @Size(min=5) String myParam) {
    return new Message("bean:" + myBean.toString());
}

public static class MyBean {

    @NotNull
    public String myStr;

    @Max(value = 3)
    public int myInt;

    public String toString() {
        return myStr + myInt;
    }
}

В этом случае ограничение @Size на myParam работает нормально. Но ограничения @NotNull и @Max в MyBean не вызываются.

Я где-то пропускаю аннотацию?

Вот еще одна подсказка. Мои журналы включают следующие записи:

2014-12-30 12:16:56 org.hibernate.validator.internal.util.Version 6446 INFO  HV000001: Hibernate Validator 5.0.1.Final
2014-12-30 12:16:56 org.jboss.resteasy.plugins.validation.AbstractValidatorContextResolver 6477 INFO  Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
  • 0
    Ссылка, на которую вы ссылаетесь, относится к бета-версии resteasy, где код не был окончательным ни в коем случае.
Теги:
bean-validation
jax-rs
resteasy

1 ответ

2
Лучший ответ

Я уверен, но не на 100% уверен, что проблема в том, что вам не хватает @Valid в параметре MyBean. Я также рекомендовал бы сделать его отдельным классом, а не статическим классом.

В спецификациях ограничения проверки на методы, в которых объект представляет собой сложный объект, должны иметь параметр annotated @Valid чтобы гарантировать, что ограничения каскадируются.

  • 0
    Бинго, вот и все. В отличие от документов Resteasy, проверка бинов не включена по умолчанию. (Кстати, использование статического класса, кажется, хорошо.)
  • 0
    Что значит не включен по умолчанию? Требование @Valid из спецификации bean val.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню