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
Post a Comment