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 サイトの他の関連記事を参照してください。