3

私は Java 検証の分析を行っています。

オブジェクト [グラフ] をフィールドごとに検証するモジュールを構築する必要があります。アノテーションを使用し、ドメイン駆動型のカスタム アノテーションをサポートします。最も重要な側面は、無効なオブジェクトを拒否してはならず(たとえば、下層の永続レイヤーによって)、代わりに無効としてマークする必要があるということです。

たとえば、いくつかの属性を持つクラスを選択します。いずれかが無効である場合 (欠落している、または値が悪いなど)、どれが無効であるかを知り、別の場所で無効としてマークしたいと考えています。プリミティブ フィールドであろうと、検証に問題のある子エンティティであろうと、検証に合格しなかったすべてのフィールドの名前を取得することが重要です。

私は見ましjavax.validationたが、の役割を理解できませんでしたConstraintViolation:検証エラーが見つかったときにバリデーターによって返されますが AFAIKは収集するフィールド名を表示しません。

問題は、検証された Bean ごとに無効であることが判明したフィールド名のリストを表示する javax.validation の実装を使用した例はありますか?

ValidatedByまた、カスタム ロジックで検証される繰り返し属性ごとに属性を追加する代わりに、カスタム属性を導入できますか?

4

1 に答える 1

4

ConstraintViolation の原因となった要素の名前が必要な場合は、使用する必要があります

Path path =  ConstraintViolation.getPropertyPath();
// a path is an iterable of Path.Node objects
// the last node element in the path is the element that caused the violation
// You can get it's name via
Path.Node node = ...;
node.getName();

パスの詳細については、JSR-303 仕様の章 4.2 を参照してください。

于 2013-07-10T11:20:48.163 に答える