我在GWT应用程序中使用了javax.validation。* 我将依赖项添加到我的pom:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
但是在运行时我得到了ClassNotFoundException:
2012-03-20 09:46:12,253 WARN [pool-2-thread-1] o.s.c.t.c.AnnotationAttributesReadingVisitor [AnnotationAttributesReadingVisitor.java:91]读取注释元数据时无法加载类型。这是一个非致命错误,但某些注释元数据可能不可用。 java.lang.ClassNotFoundException:javax.validation.constraints.NotNull 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)~ [catalina.jar:7.0.26] 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)〜[catalina.jar:7.0.26] 在
有什么想法吗?
答案 0 :(得分:7)
验证框架实际上需要一些工作。
您需要验证API。 似乎就像你有这样但你必须记住GWT需要包含文件的源。
为了实现这一点,您需要同时包含API jar和API源。
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<type>jar</type>
<classifier>sources</classifier>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<type>jar</type>
</dependency>
如果没有这个,您将获得验证API的类未找到的异常。
您还需要确保已将验证包含添加到GWT模块XML。
<inherits name="org.hibernate.validator.HibernateValidator" />
<replace-with
class="com.google.gwt.sample.validation.client.SampleValidatorFactory">
<when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>
此外,您还需要包含某种验证引擎。如果你正在关注GWT bean验证指南,你可能想要hibernate验证。
要验证带注释的对象,您应该使用提供的API。
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
/* ... snip ... */
//get validator factory using default bootstrap mechanism of the Validation library
ValidatorFactory factory = Validation.byDefaultProvider().configure().buildValidatorFactory();
//get a validator instance
Validator validator = factory.getValidator();
//create new object
Person person = new Person();
person.setFirstName("Andrew");
//validate person object
Set<ConstraintViolation<Person>> violations = validator.validate(person);
//should be one violation from lastName being null
assert violations.size() == 1;
祝你好运。
答案 1 :(得分:1)
你必须添加一个带有验证实现的jar,比如我们的hibernate-validation。