web-dev-qa-db-ja.com

javax.validation.NotBlankにバリデータがありません

一般的なAPIモジュール(マルチモジュールプロジェクト)では、いかなる種類のHibernateの検証アノテーションも使用できないという要件があるため、javax.validationの受け入れ可能なアノテーションを使用しました。

NotBlankアノテーションを含むドメインオブジェクト(vaadinを使用)を検証したいときに問題が発生します。次の例外が発生します

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'Java.lang.String'. Check configuration for 'name'

検証は呼び出しによって呼び出されます

Validation.buildDefaultValidatorFactory().validateValue(beanType, propertyName, value)

同じコードがhibernateのNotBlankで完全に機能します

また、javaxの@ Size @ NotNullは正常に機能します。

NotBlankバリデーターの実装をDefaultValidatorFactoryに提供することは可能ですか?

依存関係がありませんか? (私はすでにhibernate-validatorを持っています)

JavaxのNotBlankはhibernateのNotBlankと同じように機能しますか(つまり、文字列を検証しますか?)

これを解決する方法は?

7
daredesm

問題は、その時点で使用しているバージョンにあります。 6.0.xシリーズに更新する必要があります。現在の最新のものは6.0.9です。 groupIdがorg.hibernate.validatorに変更されていることに注意してください。

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.9.Final</version>
</dependency>

javax.validation.constraints.NotBlankBean Validation 2. の一部であり、そのバリデーターは5.3シリーズには存在しません。

8
mark_o

as baeldung.com say JSR 380仕様によると、validation-api依存関係には標準の検証APIが含まれています。

<dependency>
  <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>

Hibernate Validatorは、検証APIのリファレンス実装です。これを使用するには、次の依存関係を追加する必要があります。

<dependency>
   <groupId>org.hibernate.validator</groupId>
   <artifactId>hibernate-validator</artifactId>
<version>6.0.2.Final</version>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.2.Final</version></dependency>
0
billschen