You need to decorate addresses member of UserAddressesForm with @Valid annotation. See section 3.1.3 and 3.5.1 of JSR 303: Bean Validation. As I explained in my answer to the question Is there a standard way to enable JSR 303 Bean Validation using annotated method, this is the real use of @Valid annotation as per JSR 303.
Edit
Example code: Hibernate Validator- Object Graph. (The list of passengers in Car)
Edit From Hibernate Validator 6 Reference doc:
In versions prior to 6, Hibernate Validator supported cascaded validation for a subset of container elements and it was implemented at the container level (e.g. you would use
@Valid private List<Person>to enable cascaded validation forPerson).This is still supported but is not recommended. Please use container
element level@Validannotations instead as it is more expressive.
Example:
public class Car {
private List<@NotNull @Valid Person> passengers = new ArrayList<Person>();
private Map<@Valid Part, List<@Valid Manufacturer>> partManufacturers = new HashMap<>();
//...
}
Also see what’s new in Bean Validation 2.0/Jakarta Bean Validation.