JSR 303:注釈付きオブジェクトのコレクションを検証する方法は?
-
29-09-2019 - |
質問
JSR 303 -Jave Beanの検証でオブジェクトのコレクションを検証することは可能ですか?コレクション自体に注釈がないが、その中に含まれる要素が含まれていますか?
たとえば、2人目のヌル名のためにこれが制約違反をもたらす可能性はありますか。
List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);
他のヒント
あなた、追加することもできます @NotEmpty
コレクションに。
public class Car {
@NotEmpty(message="At least one passenger is required")
@Valid
private List<Person> passengers = new ArrayList<Person>();
}
これにより、少なくとも1人の乗客が存在することが保証され、 @Valid
注釈により、それぞれが保証されます Person
オブジェクトが検証されます
もちろん、リストを繰り返して、各要素でvalidator.validateを呼び出すこともできます。または、リストをいくつかのラッパーBeanに入れて、@validで注釈を付けます。検証用のArrayListを拡張することは間違っているようです。これで解決したい特定のユースケースはありますか?もしそうなら、あなたはそれをもう少し説明することができます。最初の質問に答えるには:
JSR 303 -Jave Beanの検証でオブジェクトのコレクションを検証することは可能ですか?コレクション自体に注釈がないが、その中に含まれる要素が含まれていますか?
いいえ
私はこの一般的なクラスを書きました:
public class ValidListWrapper<T> {
@Valid
private List<T> list;
public ValidListWrapper(List<T> list) {
this.list = list;
}
public List<T> getList() {
return list;
}
}
ジャクソンライブラリを使用してJSONを脱復する場合は、追加できます @JsonCreator
コンストラクターとジャクソンでの注釈は、JSONアレイをラッパーオブジェクトに自動的にゆったりさせます。
所属していません StackOverflow