1

GWT で Bean 検証を使用しようとしています。私はこのガイドに従います: https://developers.google.com/web-toolkit/doc/latest/DevGuideValidation

コンパイル時に、次のエラーが発生します。

ERROR: Could not load deferred binding result type 'com.google.gwt.sample.validation.client.SampleValidatorFactory'

この依存関係を含めると、機能させることができます。

<dependency>
  <groupId>com.googlecode.gwt-validation</groupId>
  <artifactId>gwt-validation</artifactId>
  <version>2.1</version>
</dependency>

しかし、この依存関係はガイドに記載されていないため、奇妙に感じます。

質問: GWT 2.5 は Bean 検証をサポートするはずですが、なぜこの追加ライブラリが必要なのですか? 私は何を間違っていますか?

GWT 2.5.0 を使用しています

私の pom.xml には、次の依存関係が含まれています。

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.3.1.Final</version>
  <type>jar</type>
  <classifier>sources</classifier>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.3.1.Final</version>
  <type>jar</type>
</dependency>

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

私の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>

コードでは、次の方法で Validator を取得します。

import javax.validation.Validator;
...
private static final Validator VALIDATOR= Validation.buildDefaultValidatorFactory().getValidator();
4

1 に答える 1

2

サードパーティ ライブラリ gwt-validation とネイティブ GWT 検証を混在させています。gwt-validation は、公式の gwt チームまたは Google によるものではありません。ネイティブの gwt 検証サポートに固執する場合は、pom で以下を使用しないでください。

<dependency>
  <groupId>com.googlecode.gwt-validation</groupId>
  <artifactId>gwt-validation</artifactId>
  <version>2.1</version>
</dependency>

また、ネイティブ gwt hibernate バリデータは 4.1.0 までしかサポートしていないことに注意してください。GWT サンプルの使用法。GWT ネイティブの休止状態バリデータソース コード

そして、あなたはそれを次のように含めることができます

<!-- Hibernate bean validation binary for the server -->

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.1.0.Final</version>
  <exclusions>
    <exclusion>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
    </exclusion>
    <exclusion>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<!-- Hibernate bean validation source for the GWT client -->

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.1.0.Final</version>
  <classifier>sources</classifier>
  <exclusions>
    <exclusion>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
    </exclusion>
    <exclusion>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<!-- Required by Hibernate validator because slf4j-log4j is
     optional in the hibernate-validator POM
 -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.1</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.6.1</version>
</dependency>
于 2013-04-04T17:30:34.563 に答える