1

Gwt 2.4.0 でGwt-Validationを使用したいと考えています。

私は 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' は、abstract であってはなりません。

//... 主に美しいスタックトレース:

「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>

私に何ができる ?ありがとう。

4

2 に答える 2

1

問題は Java のインポートにありました。

次のコードでは:

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

インポートしました:

com.google.gwt.validation.clientそれ以外のjavax.validation

Javaコンパイル時にエラーなし!上記の gwt コンパイル時 (またはホスト モードでの実行時) のエラーのみ。

于 2012-01-27T09:00:34.253 に答える
0

私は 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);

いい物!

于 2012-01-27T08:56:41.783 に答える