0

私が達成しようとしているのは次のとおりです。

たとえば、次のクラスを使用して、Bean に基づくフォームを検証します。

public class PersonForm {

    @NotNull
    String name;

    List<Long> interests;

    // This attribute is not filled out in the form
    List<Interest> realInterests;
}

したがって、「名前」と「興味」は Web フォームから取得されます。「名前」にはいくつかの制約 (NotNull) があり、@Valid を使用すると、本来の目的が実行されます。

「interests」は、Interest ID のリストです。

「名前」の最初の検証を行った後、List コレクションに入力します。

@CustomValidInterest
public class Interest {

    Long id;
    String name;
    boolean available;

}

後でこの構造を検証したいと思います。「@CustomValidInterest」はカスタム検証アノテーションです。do this with Validation Groups を使用して、2 段階の検証を行うことができます。

問題は、一部の「興味」オブジェクトが有効でない場合、エラー メッセージを「興味」フィールド (List< Long > タイプ) に関連付けたいため、フォーム エラーを取得すると、エラーが正しいフィールドに関連付けられることです。

検証を間違った方法で使用しようとしているのかもしれません。エラーを手動で埋めるプログラムによる比較の束を避けようとしていました。

4

1 に答える 1

0

私自身の質問に答えると、これはPropertyEditorsを使用して達成できます。フォームはList<Long>を返す場合がありますが、フォームオブジェクトは、前述のプロパティマッパーを使用して作成されたList<Interest>のみを持つことができます。その後、そのリストの@Validは、「Interest」が適用する制約を検証する必要があります。

于 2012-10-22T06:20:01.453 に答える