java - JSR-303 @Valid annotation (nested object) not working -


[spring 3.0.5][jboss 5.1]

my main classes

public class useraddressesform {      @notempty     private string firstname;      @notempty     private string lastname;      private list<addressform> addresses;  ... setters , 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 , getters 

a controller

@requestmapping(value = "/up", method = requestmethod.post)     public string completeform(@valid @modelattribute("useraddressesform") useraddressesform useraddressesform,               bindingresult result, httpservletrequest req) ... 

a jsp page

<form:form commandname="useraddressesform" action="registered">     <table>          <tr>             <td class="formlabels"><form:label path="firstname">                 <spring:message code="label.name" />             </form:label></td>             <td><form:input path="firstname" /></td>             <td><form:errors path="firstname" cssclass="error" /></td>         </tr>         <tr>             <td class="formlabels"><form:label path="lastname">                 <spring:message code="label.surname" />             </form:label></td>             <td><form:input path="lastname" /></td>             <td><form:errors path="lastname" cssclass="error" /></td>         </tr>     </table>      <c:foreach items="${useraddressesform.addresses}" varstatus="gridrow">           <div id="main_address" class="address_data_form">             <fieldset>                 <legend><spring:message code="label.stepthreemainaddressinfo" /></legend>                 <a href="#" class="deleteitem"></a>                 <table>                     <tr>                                     <td class="formlabels">                             <spring:message code="label.address.custom.name" />                         </td>                         <td>                             <spring:bind path="addresses[${gridrow.index}].customname">                                 <input type="input" name="<c:out value="${status.expression}"/>"                                     id="<c:out value="${status.expression}"/>"                                     value="<c:out value="${status.value}"/>" />                                     <form:errors path="${status.expression}"/>                             </spring:bind>                         </td>                        </tr>                                    <tr>                                     <td class="formlabels">                             <spring:message code="label.streetanstreethn" />                         </td>                         <td>                             <spring:bind path="addresses[${gridrow.index}].streetan">                                 <input type="input" name="<c:out value="${status.expression}"/>"                                     id="<c:out value="${status.expression}"/>"                                     value="<c:out value="${status.value}"/>" />                             </spring:bind>                             <spring:bind path="addresses[${gridrow.index}].streethn">                             <input type="input" name="<c:out value="${status.expression}"/>"                                 id="<c:out value="${status.expression}"/>"                                 value="<c:out value="${status.value}"/>" >                             <form:errors path="addresses[${gridrow.index}].streethn"/>                             </spring:bind>                          </td>                     </tr>                     <tr>                                                 <td class="formlabels">                             <spring:message code="label.postcode" />                         </td>                         <td>                             <spring:bind path="addresses[${gridrow.index}].postcode">                                 <input type="input" name="<c:out value="${status.expression}"/>"                                     id="<c:out value="${status.expression}"/>"                                     value="<c:out value="${status.value}"/>" />                             </spring:bind>                         </td>                                        </tr>                     <tr>                                         <td class="formlabels">                             <spring:message code="label.city" />                         </td>                         <td>                             <spring:bind path="addresses[${gridrow.index}].city">                                 <input type="input" name="<c:out value="${status.expression}"/>"                                     id="<c:out value="${status.expression}"/>"                                     value="<c:out value="${status.value}"/>" />                                 <form:errors path="addresses[${gridrow.index}].city" cssclass="error" />                             </spring:bind>                         </td>                     </tr>                        </table>                 </fieldset>         </div>     </c:foreach> 

why object fields not validated addressform?

please help.

you need decorate addresses member of useraddressesform @valid annotation. see section 3.1.3 , 3.5.1 of jsr 303: bean validation. explained in answer question is there standard way enable jsr 303 bean validation using annotated method, real use of @valid annotation per jsr 303.

edit example code: hibernate validator- object graph. (the list of passengers in car)


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -