2

JSR303検証を使用してBeanの配列を検証したいと思います。スペックが言うように、コレクション全体を検証することは可能です。私がこのようなオブジェクトを持っていたら

public class Car {
  @NotNull
  @Valid
  private List<Person> passengers = new ArrayList<Person>();
}

したがって、次のようにすることで、乗客のリストを検証できます。

Car car = ....
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<Car>> validation = validator.validate(car);

しかし、次のようにして乗客のリストを検証できないのはなぜだろうと思います。

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation =validator.validate(passengers);

それはうまくいきません!誰か説明してもらえますか?

4

1 に答える 1

2

Bean Validationは、コレクションを直接検証するためのAPIを提供していません。を使用したコレクション/配列のカスケード検証のみ@Validがサポートされています。

使用validate()しているメソッドは、渡されたオブジェクトのタイプで宣言された制約を検証します。Listまたはに制約が宣言されていないためArrayList、リストをに直接渡すときに制約違反は発生しませんvalidate()

乗客リストを繰り返し処理して個々の要素を検証するか、リストを所有するオブジェクトを検証することができます(元の例のように)。

于 2012-05-02T18:24:39.250 に答える