JSR 303: How to Validate a Collection of annotated objects?
Solution 1:
Yes, just add @Valid
to the collection.
Here is an example from the Hibernate Validator Reference.
public class Car {
@NotNull
@Valid
private List<Person> passengers = new ArrayList<Person>();
}
This is standard JSR-303 behavior. See Section 3.1.3 of the spec.
Solution 2:
You, can also add @NotEmpty
to the collection.
public class Car {
@NotEmpty(message="At least one passenger is required")
@Valid
private List<Person> passengers = new ArrayList<Person>();
}
this will ensure at least one passenger is present, and the @Valid
annotation ensures that each Person
object is validated
Solution 3:
You can of course also just iterate over the list and call Validator.validate on each element. Or put the List into some wrapper bean and annotate it with @Valid. Extending ArrayList for validation seems wrong to me. Do you have a particular use case you want to solve with this? If so maybe you can explain it a little more. To answer your initial question:
Is it possible to validate a collection of objects in JSR 303 - Jave Bean Validation where the collection itself does not have any annotations but the elements contained within do?
No