Аннотации JSR303 не работают с Tomcat 7

После пары часов гугления и пары туториалов я в шоке... Не факт, что я получаю ошибки, которые могут подсказать мне, в чем проблема, это их полное отсутствие, которое сводит меня с ума!

Следующий код работает, но не так, как должен! Аннотации для проверки того, что ввод не является нулевым или меньше 3 символов, просто никогда не запускаются. Они также не выдают никаких ошибок при развертывании проекта или при записи переменной имени.

public class testBean
{
    @NotNull
    @Size(min=3)
    private String name;
}

public void test()
{
    System.out.println(name);
}

И форма ввода:

<h:form>
        <h:inputText value="#{testBean.name}" />
    <h:commandButton value="Send" action="#{testBean.test()}" />
</h:form>

Я предполагаю, что проблемы возникают из-за tomcat, хотя я уверен, что импортировал все необходимые библиотеки. То же самое касается IDE, которую я использую, Eclipse.


person David    schedule 20.04.2011    source источник


Ответы (2)


Что касается библиотек, я включил «validation-api-1.0.0.GA.jar» как в папку «WEB-INF/lib», так и в папку «apache-tomcat-7/lib».

Вы установили только API, а не реализацию. API — это абстрактный контракт, так что вы можете объявить/использовать его в своем коде и иметь свободу выбора реализации. Реализация содержит конкретный код и выполняет реальную работу. Вам также необходимо установить impl. Эталонная реализация JSR-303 — это Hibernate Validator. Сведения о загрузке находятся здесь. В настоящее время последний окончательный вариант: 4.1.0. Он содержит файл hibernate-validator-4.1.0.Final.jar, который является реальной реализацией. Бросьте это в Webapp/WEB-INF/lib. Это не обязательно должно быть в Tomcat7/lib, я бы также удалил оттуда API, чтобы предотвратить будущие коллизии пути к классам.

person BalusC    schedule 20.04.2011
comment
Пробовал, не работает :S Валидатор все еще игнорируется. Может проблема в CDI? - person David; 20.04.2011

У меня была такая же проблема, и искал некоторое время, в моем случае с помощью hibernate-validator-4.2.0.Final.jar мне не хватало slf4j-api-1.6.4.jar. Проблема в том, что валидатор hibernate не падает, но НЕ говорит, что он не работает....

person Gauthier Peel    schedule 18.05.2012