如何使用gwt-2.4.0安装gwt验证



我想将Gvt Validation与Gvt 2.4.0一起使用。

我的gwt.xml文件中有:

  <inherits name="javax.validation.Validation" />
  <inherits name="com.google.gwt.validation.Validation" />
  <inherits name='com.em.validation.Validation' />

与文档中一样,我有以下代码:

import javax.validation.Validator;
import javax.validation.ValidatorFactory;
...
ValidatorFactory factory =
    Validation.byDefaultProvider().configure().buildValidatorFactory();
Validator validator = factory.getValidator();

问题是我有以下错误:

延迟绑定结果类型"javax.validation.ValidationFactory"不应是抽象的。

//。。。美丽的堆栈主要有:

"javax.validation.ValidatorFactory"的延迟绑定失败(确实您忘记继承必需的模块了吗?)

我的pom.xml包含:

<dependency>
  <groupId>com.googlecode.gwt-validation</groupId>
  <artifactId>gwt-validation</artifactId>
  <version>2.0</version>
</dependency>
<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>
  <classifier>sources</classifier>
  <scope>provided</scope>
</dependency>

我能做什么?谢谢

问题出在java导入中。

在以下代码中:

ValidatorFactory factory =
    Validation.byDefaultProvider().configure().buildValidatorFactory();
Validator validator = factory.getValidator();

我进口:

com.google.gwt.validation.client而不是javax.validation

java编译时没有错误!只是上面在gwt编译时(或使用托管模式的运行时)出现的错误。

我的GWT.XML文件中有这个:

<inherits name="org.hibernate.validator.HibernateValidator" />
<replace-with class="com.example.client.MyValidatorFactory">
    <when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>

我这样定义MyValidatorFactory:

public final class MyValidatorFactory extends AbstractGwtValidatorFactory {
    /**
     * Validator marker for the Validation Sample project. Only the classes
     * listed in the {@link GwtValidation} annotation can be validated.
     */
    @GwtValidation(value = { Customer.class, License.class, Account.class })
    public interface MyValidator extends Validator {
    }
    @Override
    public AbstractGwtValidator createValidator() {
        return GWT.create(GwtValidator.class);
    }
}

在我的类路径中,我有:

hibernate-validator-4.2.0.Final-sources.jar
hibernate-validator-4.2.0.Final.jar

现在您可以验证您的域对象:

    Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    Set<ConstraintViolation<Account>> violations = validator.validate(account);

同样的验证也适用于服务器端

private static ValidatorFactory factory = Validation.byDefaultProvider().configure().buildValidatorFactory();
Set<ConstraintViolation<DomainResource>> violations = factory.getValidator().validate(account);

好东西!

最新更新