4

休止状態バリデーターを使用して gwt 検証を機能させようとしています。http://code.google.com/p/google-web-toolkit/wiki/BeanValidationの手順に従い、 http: //code.google.com/p/のサンプル検証プロジェクトに従ってプロジェクトを構成しました。google-web-toolkit/source/browse/trunk/samples/validation/

私の .gwt.xml ファイルには以下が含まれています。

<inherits name="org.hibernate.validator.HibernateValidator" />

そして私のカスタム検証工場:

<replace-with class="my.package.here.client.validation.ValidatorFactory">
<when-type-is class="javax.validation.ValidatorFactory" />
</replace-with>     

検証は、開発モードではクライアント側とサーバー側の両方で完璧に機能しますが、gwt コンパイルを試みると、次のようになります。

gwtc-production:
     [java] Compiling module my.package.MyModule
     [java]    Validating newly compiled units
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/FutureValidatorForReadableInstant.java'
     [java]          [ERROR] Line 32: No source code is available for type org.joda.time.ReadableInstant; did you forget to inherit a required module?
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/FutureValidatorForReadablePartial.java'
     [java]          [ERROR] Line 32: No source code is available for type org.joda.time.ReadablePartial; did you forget to inherit a required module?
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/PastValidatorForReadableInstant.java'
     [java]       [ERROR] Errors in 'jar:file:/hibernate-validator-4.2.0.Final-sources.jar!/org/hibernate/validator/constraints/impl/SafeHtmlValidator.java'
     [java]          [ERROR] Line 22: The import org.jsoup cannot be resolved
     [java]          [ERROR] Line 23: The import org.jsoup cannot be resolved
     [java]          [ERROR] Line 35: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 40: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 40: Whitelist cannot be resolved
     [java]          [ERROR] Line 43: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 43: Whitelist cannot be resolved
     [java]          [ERROR] Line 46: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 46: Whitelist cannot be resolved
     [java]          [ERROR] Line 49: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 49: Whitelist cannot be resolved
     [java]          [ERROR] Line 52: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 52: Whitelist cannot be resolved
     [java]          [ERROR] Line 55: Whitelist cannot be resolved to a type
     [java]          [ERROR] Line 62: Jsoup cannot be resolved
     [java]          [ERROR] Line 62: Whitelist cannot be resolved to a type
     [java]       [ERROR] Errors in 'jar:file:gwt-user.jar!/org/hibernate/validator/super/org/hibernate/validator/engine/PathImpl.java'
     [java]          [ERROR] Line 72: The constructor NodeImpl(String) is undefined
     [java]          [ERROR] Line 84: The constructor NodeImpl(Path.Node) is undefined
     [java]          [ERROR] Line 95: The constructor NodeImpl(Path.Node) is undefined
     [java]          [ERROR] Line 202: The constructor NodeImpl(String) is undefined
     [java]          [ERROR] Line 204: The method setInIterable(boolean) is undefined for the type NodeImpl
     [java]          [ERROR] Line 209: The method setIndex(Integer) is undefined for the type NodeImpl
     [java]          [ERROR] Line 212: The method setKey(String) is undefined for the type NodeImpl
     [java]    [ERROR] Aborting compile due to errors in some input files

明らかに不足しているソース jar がいくつかあります。私はクラスパスに(とりわけ)持っています:

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

joda-time-2.1.jarjoda-time-2.1-sources.jarjsoup-1.6.3.jarおよびも追加してみjsoup-1.6.3-sources.jarました。

ソースを提供する必要がないように、org.hibernate.validator.HibernateValidator を継承してスーパー ソースを処理するべきではありませんか? 誰かが私が見逃しているものを見ることができますか?

4

3 に答える 3

7

PathImplGWT は Hibernate Validator 4.1.0-Final に対して構築されており、その内部 ( 、 )の一部に依存しており、NodeImplそれらは Hibernate Validator 4.2.0 で明らかに変更されています。

4.2.0 の代わりに 4.1.0-Final (またはサンプルのように 4.0.2.GA) を使用します。


問題はGWT Trackerで追跡できます。おそらく、少なくとも非互換性を明示的に文書化する必要があります。

于 2012-09-12T10:59:20.523 に答える
0

Hibernate 検証の GWT 実装を知りませんでした。しかし、GWT がまさに Hibernate ソース jar からコードを理解しようとするのはなぜでしょうか? それが GWT 独自のコードである場合は、gwt-user.jar などから取得する必要があります。

私に同意する場合は、GWT コンパイル クラスパスに実際の Hibernate jar を含めないでください。とにかく、それは必要ありません/知っています。

于 2012-09-12T10:32:19.277 に答える
0

4.1.0 でも問題なく動作しましたが、しばらくすると、それ以降のバージョンにはいくつかの問題があることがわかりました。したがって、gwt のチュートリアル ( http://www.gwtproject.org/doc/latest/DevGuideValidation.html )で推奨されているものと同じバージョンを使用してください。

detected warnings related to 'javax.validation.constraint'. is validation- version .jar on the classpath

私が修正したもの:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <scope>compile</scope>
</dependency>
于 2014-07-02T13:50:42.453 に答える