Валидация метода с помощью Weld и Hibernate Validator
Кто-нибудь знает, как запустить проверку метода при использовании Weld и Hibernate Validator? Мое приложение должно быть автономным, поэтому я не использую сервер приложений.
@NotNull
ограничение для метода test
в моем коде ниже просто игнорируется.
Мой код такой:
Test.java
package com.example.methodvalidation;
import org.jboss.weld.environment.se.bindings.Parameters;
import org.jboss.weld.environment.se.events.ContainerInitialized;
import javax.enterprise.event.Observes;
import javax.inject.Singleton;
import javax.validation.constraints.NotNull;
import java.util.List;
@Singleton
public class Test {
public void main(@Observes ContainerInitialized event, @Parameters List<String> parameters) {
test("Hello method validation");
test(null);
}
public void test(@NotNull String s) {
System.out.println(s);
}
}
validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration"
version="1.1">
<executable-validation>
<default-validated-executable-types>
<executable-type>ALL</executable-type>
</default-validated-executable-types>
</executable-validation>
</validation-config>
Я использую Gradle для сборки; это мой gradle.build с зависимостями:
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'org.jboss.weld.environment.se.StartMain'
repositories {
mavenCentral()
}
dependencies {
compile "org.hibernate:hibernate-validator:5.0.2.Final",
"org.hibernate:hibernate-validator-cdi:5.0.2.Final",
"org.jboss.weld.se:weld-se:2.1.1.Final",
"javax.el:javax.el-api:2.2.4",
"org.glassfish.web:javax.el:2.2.4"
}
Я попытался использовать CDI Hibernate Validator, который упоминается в руководстве по началу работы с "org.hibernate:hibernate-validator-cdi:5.0.2.Final"
, но это тоже не сработало.
Чего мне не хватает, чтобы запустить проверку метода?
1 ответ
Решил сам: вызов метода в том же классе не рассматривается как вызов бизнес-метода и, следовательно, проверка не происходит. Если вызванный метод перемещается в отдельный класс, который затем внедряется в класс Test выше, он работает.
Для получения дополнительной информации см. Здесь: https://community.jboss.org/thread/234467