ホームページ > Java > Hibernate Validator でメッセージを挿入するときにインスタンス変数にアクセスするにはどうすればよいですか?

Hibernate Validator でメッセージを挿入するときにインスタンス変数にアクセスするにはどうすればよいですか?

WBOY
リリース: 2024-02-14 13:42:09
転載
748 人が閲覧しました

Hibernate Validator では、検証メッセージをカスタマイズする必要があることがよくあります。場合によっては、メッセージを動的に生成するためにインスタンス変数にアクセスする必要があります。では、Hibernate Validator でインスタンス変数にアクセスするにはどうすればよいでしょうか?まず、検証アノテーションでプレースホルダーを使用してインスタンス変数を参照する必要があります。次に、メッセージ リソース ファイルで、「{}」を使用してインスタンス変数の値を取得できます。このようにして、インスタンス変数の値を柔軟に挿入して、パーソナライズされた検証メッセージを生成できます。この記事では、PHPエディターのYuzaiが、Hibernate Validatorでメッセージを挿入する際にインスタンス変数にアクセスする方法を詳しく紹介します。

質問内容

crudrepository::saveを使用してリポジトリにオブジェクトを挿入するときに、Hibernate ValidatorとSpringを使用してオブジェクトを検証しています。クラスが

であるとします。 リーリー

補間メッセージが、id フィールドなどの person インスタンスのすべてのフィールドにアクセスできるようにし、「${id}」や「${this.id}」のようにアクセスできるようにしたいと考えています。ドキュメントにはすべての Bean プロパティにアクセスできることが記載されていますが、それはクラス レベルの制約でのみ機能すると思います。

クラスレベルの制約に頼らずにこれを行う方法はありますか?

回避策

制約バリデータは、フィールド自体の外部の情報にはアクセスできません。つまり、兄弟フィールドにアクセスする方法はありません。これは制約の範囲に関係します。このように見てください:

リーリー

空ではない name は、個人フィールド、または会社または他のクラスのフィールドにすることができます。 @notblank が存在する場所と区別できません。

したがって、質問で示唆したように、メッセージを挿入するときに他のクラスフィールドにアクセスするには、制約はクラスレベルである必要があります... 大量のカスタム制約の作成を避けるために、@scriptassert を検討することを検討してください。

また、constraintviolationException には、リーフ Bean (getleafbean()) またはルート Bean ( getrootbean ()) を実行し、例外をスローした後に必要な情報を取得します。

以上がHibernate Validator でメッセージを挿入するときにインスタンス変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート