問題タブ [hibernate-validator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate Validator を Hibernate 外部のコンポーネントとして使用できますか?
メッセージ ペイロード (json) の検証を追加しようとしています。私は、データ バインディングにJackson Json プロセッサを使用しています。これは、Bean メソッドと時折の注釈を 1 つまたは 2 つ使用して、私にとっては非常にうまく機能します。
しかし、データバインディングを超えて、実際の値を宣言的に検証したいと思います。具体的には、外部スキーマよりも注釈を好みます (DRY 原則、コードと制約を完全に同期させます)。そのため、これを行うための単純な検証ライブラリを探しています。
JSR-303 は、宣言部分に必要なアノテーションをほとんど定義しているようです。そして、Hibernate Validatorは、これらのアノテーションを使用する実際のバリデーターの実装のようです。しかし、ドキュメンテーションは、Hibernate で使用されるユース ケースをカバーしているため、Hibernate 自体の外で使用できるかどうかはわかりません。問題のサービスのデータベース アクセスは行わないため、Hibernate の他の部分を含めないことをお勧めします。
誰かがこれを行ったことがありますか、またはサンプルへの適切なポインタを持っていますか?
または、誰かが別の優れた JSR-303 実装を知っていれば、同様に機能します。
java - How can I change annotations/Hibernate validation rules at runtime?
If have a Java class with some fields I want to validate using Hibernate Validator. Now I want my users to be able to configure at runtime which validations take place.
For example:
Let's say I want to remove the NotEmpty
check or replace it with Email
or CreditCardNumber
, how can I do it? Is it even possible? I guess it comes down to changing annotations at runtime...
hibernate-validator - Hibernate Validator @NotEmpty が重複したメッセージを生成するのはなぜですか?
@NotEmpty
Hibernate Validator を使用しているときに、およびアノテーションが によって返される配列に@NotNull
重複したメッセージを生成することに気付きました。InvalidValue
getInvalidValues(...)
のようなメッセージを指定すると@NotEmpty(message = "My error message.")
、「My error message.」という InvalidValue が 1 つ取得されます。および「null または空ではない可能性があります」の 2 番目
メッセージを含めない場合 (たとえば@NotEmpty
、それ自体)、「null または空ではない可能性があります」というメッセージ フィールドを持つ InvalidValue の 2 つのコピーを取得します。
Hibernate Validator がこれを行うのはなぜですか?? パラメーターを使用して上書きする値、または既定のメッセージのいずれかのメッセージを取得する必要がありますが、両方を取得する必要はありませんか??
より多くのコンテキストについて:
私はClassValidator<T>
独自のClassValidator<MyClass>
実装で拡張しています。アノテーションでは実行できないカスタム検証を追加するためにそうしています。検証を判断するために、クラスの複数のプロパティの実行時の値を確認する必要があります。
オーバーライドする myClassValidator.getInvalidValues() を呼び出すと、検証が行われます。の実装内でgetInvalidValues()
呼び出しsuper.getInvalidValues()
て初期エラー リストを作成し、カスタム エラーをそのリストに追加します。いずれの場合でも、 への呼び出しにsuper.getInvalidValues()
は重複メッセージが含まれます。1 つはアノテーションに渡されたメッセージ プロパティに一致し、もう 1 つはアノテーション メッセージのストック値に一致します。
jsf - カスタム変換エラーメッセージを表示する
JSFでHibernateバリデーターを使用しています。変換エラーメッセージを設定するにはどうすればよいですか?私はそれらを次のように使用していますが、機能しませんでした:
Beanにカスタムバリデーターメッセージを次のように設定できます。
しかし、変換エラーをどうするか?
validation - Spring JSR303 検証は、Spring ドキュメントで説明されているようには機能しません
Spring 3.0 ドキュメントのセクション5.7.4.3で説明されているように、Web アプリケーションの検証を実装しようとしました。
依存関係として hibernate-validator を追加し、すべて問題ないように見えますが、Web アプリを起動すると次のエラーが発生します。
API を見ると、何かが間違っていることは明らかです。を期待しながらLocalValidatorFactoryBean
実装します。javax.validation.Validator
ConfigurableWebBindingInitializer.setValidator()
org.springframework.validation.Validator
これに対する解決策はありますか?
編集
これは、Spring アプリケーション コンテキストでの (JSR-303) セットアップの中心 的な
javax.validation
クラスです。javax.validation.ValidationFactory
Validator
Validator
ValidatorFactory
以下でアレックス・マーシャルが述べたように、これは当てはまりません。LocalValidatorFactoryBean
のみを実装しjavax.validation.Validator
ます。
LocalValidatorFactoryBean
拡張しSpringValidatorAdapter
ますが、これは を実装し org.springframework.validation.Validator
ます。
hibernate - Hibernate-validator: @NotEmpty は null 値に対して機能しません
@NotEmpty タグで文字列フィールドに注釈を付けました。
このフィールドの値「」でエンティティを永続化しようとすると、正常に機能します。メカニズムは検証エラーを検出し、問題を通知する InvalidStateException 例外を発生させます。
しかし、このフィールドの値が null のエンティティを永続化しようとすると、UndeclaredThrowableException (InvocationTargetException が原因、PropertyValueException が原因: not-null プロパティが null または一時的な値を参照している) 例外が発生します。 null 非許容フィールド。
問題は明らかです。なぜ検証メカニズムがこの状況を検出しないのでしょうか? UndeclaredThrowableException の代わりに InvalidStateException 例外を発生させるべきだと思います。
次のライブラリを使用していました。
そして今、私はアップグレードするだけです
これらは最新の安定版リリースです。
しかし、それはまだ機能していません。
何か案が?
完全なエラー トレース:
マージイベントリスナーを sessionFactory Bean に登録しようとしています:
次のエラーが発生します。
前もって感謝します。
java - Hibernate Validator の例外
EJB と Spring MVC を使用するアプリケーションで Hibernate Validator を使用しています。JBoss 5、Hibernate 3、および Spring MVC バージョン 3 を使用しています。
Spring Exception Resolver レベルで検証例外をキャッチして、メッセージに基づいてエラー メッセージを生成したいと考えていInvalidStateException
ます。データ アクセス層に例外処理ロジックを配置したくありません。これを注釈によって駆動し、検証エラーを一元化された場所で処理するだけにしたいと考えています。
ドメイン モデルは正しく検証されておりInvalidStateException
、無効なエンティティを作成しようとすると (フィールドの長さの制約に違反するなど)、期待どおりに型の例外がスローされます。Spring Exception リゾルバーのインスタンスで例外をキャッチしようとした時点で、元の例外が消えて代わりに ajavax.ejb.EJBTransactionRolledbackException
が使用されていることがわかりました。元の例外は原因リストにありません。
私の最初の推測では、のorg.hibernate.validator.InvalidStateException
アノテーションが付けられていなかったApplicationException
ので、Hibernate イベント リスナーをインストールし、元の例外をキャッチして、 のアノテーションが付けられた新しい例外として再スローしましたApplicationException
。これは効果がありません。
さらに複雑なのは、Web 層がリモート インターフェースを介して EJB を呼び出していることです。例外クラスに で注釈を付けましWebFault
たが、役に立ちませんでした。
例外が確実にバブルアップするようにするにはどうすればよいですか?
java - Spring 3.xでHibernate @Valid制約を使用するには?
このようなフィールドを検証するための単純なフォームに取り組んでいます。
クラスパスにもゲッターとセッターの休止状態の依存関係を提供しますが、単純なフォームを検証する方法がまだわかりません。実際には、春の休止状態の組み合わせに関するドキュメントはあまりありません。
元のSpring 3.xのドキュメントを除いて、説明したり、チュートリアルを提供したりできますか
hibernate - @Range ベースの休止状態の検証チェック
JPA エンティティ コードで @Range ベースの hibernate 検証チェック (org.hibernate.validator.RangeValidator) を実行したいと考えています。しかし、私が避けたいこのチェックで生成されたSQLを変更しているようです。(つまり、範囲チェックでは、毎年変更される @Range の最大値として現在の年があります)。
したがって、JPA エンティティ クラスからこの注釈を削除する必要がありました。注釈を追加せずに同様のチェックを実行するにはどうすればよいですか? これらのチェックを prePersist または preUpdate で行う必要がある場合は、バリデーターを呼び出す方法を教えてください。
このトピックに関するご意見をお待ちしております
validation - Hibernate Validator (JSR 303) によるクロス フィールド検証
Hibernate Validator 4.x にクロスフィールド検証の実装 (またはサードパーティの実装) はありますか? そうでない場合、クロス フィールド バリデーターを実装する最もクリーンな方法は何ですか?
例として、API を使用して 2 つの Bean プロパティが等しいことを検証する方法 (パスワード フィールドがパスワード検証フィールドと一致することを検証するなど)。
注釈では、次のようなものを期待しています。