title: @Valid annotation is not validating the list of child objects
body: <p>Main model classes are as follows :</p>
  <pre><code>public class UserAddressesForm {
  
      @NotEmpty
      private String firstName;
  
      @NotEmpty
      private String lastName;
  
      private List&lt;AddressForm&gt; addresses;
  
      // setters and getters 
  
  }
  </code></pre>
  <hr />
  <pre><code>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
  }
  </code></pre>
  <p>An endpoint in one of my controllers :</p>
  <pre><code>@RequestMapping(value = &quot;/up&quot;, method = RequestMethod.POST)
  public String completeForm(@Valid @ModelAttribute(&quot;userAddressesForm&quot;) UserAddressesForm userAddressesForm,  
              BindingResult result, HttpServletRequest req) {
  
   // logic here 
  
  }
  </code></pre>
  <p>A <code>.jsp</code> page :</p>
  <pre><code>&lt;form:form commandName=&quot;userAddressesForm&quot; action=&quot;registered&quot;&gt;
      &lt;table&gt;
  
          &lt;tr&gt;
              &lt;td class=&quot;formLabels&quot;&gt;&lt;form:label path=&quot;firstName&quot;&gt;
                  &lt;spring:message code=&quot;label.name&quot; /&gt;
              &lt;/form:label&gt;&lt;/td&gt;
              &lt;td&gt;&lt;form:input path=&quot;firstName&quot; /&gt;&lt;/td&gt;
              &lt;td&gt;&lt;form:errors path=&quot;firstName&quot; cssClass=&quot;error&quot; /&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td class=&quot;formLabels&quot;&gt;&lt;form:label path=&quot;lastName&quot;&gt;
                  &lt;spring:message code=&quot;label.surname&quot; /&gt;
              &lt;/form:label&gt;&lt;/td&gt;
              &lt;td&gt;&lt;form:input path=&quot;lastName&quot; /&gt;&lt;/td&gt;
              &lt;td&gt;&lt;form:errors path=&quot;lastName&quot; cssClass=&quot;error&quot; /&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
      
      &lt;c:forEach items=&quot;${userAddressesForm.addresses}&quot; varStatus=&quot;gridRow&quot;&gt;  
          &lt;div id=&quot;main_address&quot; class=&quot;address_data_form&quot;&gt;
              &lt;fieldset&gt;
                  &lt;legend&gt;&lt;spring:message code=&quot;label.stepThreeMainAddressInfo&quot; /&gt;&lt;/legend&gt;
                  &lt;a href=&quot;#&quot; class=&quot;deleteItem&quot;&gt;&lt;/a&gt;
                  &lt;table&gt;
                      &lt;tr&gt;            
                          &lt;td class=&quot;formLabels&quot;&gt;
                              &lt;spring:message code=&quot;label.address.custom.name&quot; /&gt;
                          &lt;/td&gt;
                          &lt;td&gt;
                              &lt;spring:bind path=&quot;addresses[${gridRow.index}].customName&quot;&gt;
                                  &lt;input type=&quot;input&quot; name=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      id=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      value=&quot;&lt;c:out value=&quot;${status.value}&quot;/&gt;&quot; /&gt;
                                      &lt;form:errors path=&quot;${status.expression}&quot;/&gt;
                              &lt;/spring:bind&gt;
                          &lt;/td&gt;   
                      &lt;/tr&gt;               
                      &lt;tr&gt;            
                          &lt;td class=&quot;formLabels&quot;&gt;
                              &lt;spring:message code=&quot;label.streetAnStreetHn&quot; /&gt;
                          &lt;/td&gt;
                          &lt;td&gt;
                              &lt;spring:bind path=&quot;addresses[${gridRow.index}].streetAn&quot;&gt;
                                  &lt;input type=&quot;input&quot; name=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      id=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      value=&quot;&lt;c:out value=&quot;${status.value}&quot;/&gt;&quot; /&gt;
                              &lt;/spring:bind&gt;
                              &lt;spring:bind path=&quot;addresses[${gridRow.index}].streetHn&quot;&gt;
                              &lt;input type=&quot;input&quot; name=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                  id=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                  value=&quot;&lt;c:out value=&quot;${status.value}&quot;/&gt;&quot; &gt;
                              &lt;form:errors path=&quot;addresses[${gridRow.index}].streetHn&quot;/&gt;
                              &lt;/spring:bind&gt;
                              
                          &lt;/td&gt;
                      &lt;/tr&gt;
                      &lt;tr&gt;                        
                          &lt;td class=&quot;formLabels&quot;&gt;
                              &lt;spring:message code=&quot;label.postCode&quot; /&gt;
                          &lt;/td&gt;
                          &lt;td&gt;
                              &lt;spring:bind path=&quot;addresses[${gridRow.index}].postCode&quot;&gt;
                                  &lt;input type=&quot;input&quot; name=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      id=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      value=&quot;&lt;c:out value=&quot;${status.value}&quot;/&gt;&quot; /&gt;
                              &lt;/spring:bind&gt;
                          &lt;/td&gt;                   
                      &lt;/tr&gt;
                      &lt;tr&gt;                
                          &lt;td class=&quot;formLabels&quot;&gt;
                              &lt;spring:message code=&quot;label.city&quot; /&gt;
                          &lt;/td&gt;
                          &lt;td&gt;
                              &lt;spring:bind path=&quot;addresses[${gridRow.index}].city&quot;&gt;
                                  &lt;input type=&quot;input&quot; name=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      id=&quot;&lt;c:out value=&quot;${status.expression}&quot;/&gt;&quot;
                                      value=&quot;&lt;c:out value=&quot;${status.value}&quot;/&gt;&quot; /&gt;
                                  &lt;form:errors path=&quot;addresses[${gridRow.index}].city&quot; cssClass=&quot;error&quot; /&gt;
                              &lt;/spring:bind&gt;
                          &lt;/td&gt;
                      &lt;/tr&gt;       
                  &lt;/table&gt;    
              &lt;/fieldset&gt;
          &lt;/div&gt;
      &lt;/c:forEach&gt;
  </code></pre>
  <p>Why <code>@Valid</code> is not validating the <code>List&lt;AddressForm&gt; addresses</code> present in <code>UserAddressesForm</code> class ?</p>