La anotación JSR-303 @Valid (objeto nested) no funciona

[spring 3.0.5] [Jboss 5.1]

Mis clases principales son

public class UserAddressesForm { @NotEmpty private String firstName; @NotEmpty private String lastName; private List addresses; ... setters and getters public class AddressForm { @NotEmpty private String customName; @NotEmpty private String city; @NotEmpty private String streetAn; @NotEmpty private String streetHn; @NotEmpty private String addressCountry; @NotEmpty private String postCode; ... setters and getters 

Un controlador

 @RequestMapping(value = "/up", method = RequestMethod.POST) public String completeForm(@Valid @ModelAttribute("userAddressesForm") UserAddressesForm userAddressesForm, BindingResult result, HttpServletRequest req) ... 

Una página JSP

 
<input type="input" name="" id="" value="" />
<input type="input" name="" id="" value="" /> <input type="input" name="" id="" value="" >
<input type="input" name="" id="" value="" />
<input type="input" name="" id="" value="" />

¿Por qué los campos de objeto no son validados AddressForm?

Por favor ayuda.

Necesita decorar el miembro de addresses de UserAddressesForm con la anotación @Valid . Consulte la sección 3.1.3 y 3.5.1 de JSR 303: Validación de frijol . Como expliqué en mi respuesta a la pregunta ¿Existe una forma estándar de habilitar la validación de @Valid JSR 303 mediante el método anotado , este es el uso real de la anotación @Valid según JSR 303.

Editar código de ejemplo: Hibernate Validator- Object Graph . (La lista de pasajeros en el coche)

Al agregar a la respuesta @Ritesh, la restricción @Valid indicará al Bean Validator que profundice en el tipo de su propiedad aplicada y valide todas las restricciones encontradas allí. Responda con un código a su pregunta, el validador, al ver una restricción @Valid en la propiedad de addresses , explorará la clase AddressForm y validará todas las restricciones JSR 303 que se encuentran en el interior, de la siguiente manera:

 public class UserAddressesForm { @NotEmpty private String firstName; @NotEmpty private String lastName; @Valid private List addresses; ... setters and getters public class AddressForm { @NotEmpty private String customName; @NotEmpty private String city; @NotEmpty private String streetAn; @NotEmpty private String streetHn; @NotEmpty private String addressCountry; @NotEmpty private String postCode; ... setters and getters