2222import java .lang .annotation .Target ;
2323import java .util .Arrays ;
2424import java .util .Iterator ;
25+ import java .util .LinkedHashSet ;
26+ import java .util .LinkedList ;
27+ import java .util .List ;
2528import java .util .Set ;
2629import javax .validation .Constraint ;
2730import javax .validation .ConstraintValidator ;
3134import javax .validation .constraints .NotNull ;
3235
3336import org .hibernate .validator .HibernateValidator ;
34- import static org .junit .Assert .*;
3537import org .junit .Test ;
3638
3739import org .springframework .validation .BeanPropertyBindingResult ;
3840import org .springframework .validation .FieldError ;
3941import org .springframework .validation .ObjectError ;
4042
43+ import static org .junit .Assert .*;
44+
4145/**
4246 * @author Juergen Hoeller
4347 * @since 3.0
@@ -124,7 +128,53 @@ public void testSpringValidationWithClassLevel() throws Exception {
124128 BeanPropertyBindingResult result = new BeanPropertyBindingResult (person , "person" );
125129 validator .validate (person , result );
126130 assertEquals (1 , result .getErrorCount ());
127- ObjectError fieldError = result .getGlobalError ();
131+ ObjectError globalError = result .getGlobalError ();
132+ System .out .println (Arrays .asList (globalError .getCodes ()));
133+ System .out .println (globalError .getDefaultMessage ());
134+ }
135+
136+ @ Test
137+ public void testSpringValidationWithErrorInListElement () throws Exception {
138+ LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean ();
139+ validator .afterPropertiesSet ();
140+ ValidPerson person = new ValidPerson ();
141+ person .getAddressList ().add (new ValidAddress ());
142+ BeanPropertyBindingResult result = new BeanPropertyBindingResult (person , "person" );
143+ validator .validate (person , result );
144+ assertEquals (3 , result .getErrorCount ());
145+ FieldError fieldError = result .getFieldError ("name" );
146+ assertEquals ("name" , fieldError .getField ());
147+ System .out .println (Arrays .asList (fieldError .getCodes ()));
148+ System .out .println (fieldError .getDefaultMessage ());
149+ fieldError = result .getFieldError ("address.street" );
150+ assertEquals ("address.street" , fieldError .getField ());
151+ System .out .println (Arrays .asList (fieldError .getCodes ()));
152+ System .out .println (fieldError .getDefaultMessage ());
153+ fieldError = result .getFieldError ("addressList[0].street" );
154+ assertEquals ("addressList[0].street" , fieldError .getField ());
155+ System .out .println (Arrays .asList (fieldError .getCodes ()));
156+ System .out .println (fieldError .getDefaultMessage ());
157+ }
158+
159+ @ Test
160+ public void testSpringValidationWithErrorInSetElement () throws Exception {
161+ LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean ();
162+ validator .afterPropertiesSet ();
163+ ValidPerson person = new ValidPerson ();
164+ person .getAddressSet ().add (new ValidAddress ());
165+ BeanPropertyBindingResult result = new BeanPropertyBindingResult (person , "person" );
166+ validator .validate (person , result );
167+ assertEquals (3 , result .getErrorCount ());
168+ FieldError fieldError = result .getFieldError ("name" );
169+ assertEquals ("name" , fieldError .getField ());
170+ System .out .println (Arrays .asList (fieldError .getCodes ()));
171+ System .out .println (fieldError .getDefaultMessage ());
172+ fieldError = result .getFieldError ("address.street" );
173+ assertEquals ("address.street" , fieldError .getField ());
174+ System .out .println (Arrays .asList (fieldError .getCodes ()));
175+ System .out .println (fieldError .getDefaultMessage ());
176+ fieldError = result .getFieldError ("addressSet[].street" );
177+ assertEquals ("addressSet[].street" , fieldError .getField ());
128178 System .out .println (Arrays .asList (fieldError .getCodes ()));
129179 System .out .println (fieldError .getDefaultMessage ());
130180 }
@@ -139,6 +189,12 @@ public static class ValidPerson {
139189 @ Valid
140190 private ValidAddress address = new ValidAddress ();
141191
192+ @ Valid
193+ private List <ValidAddress > addressList = new LinkedList <ValidAddress >();
194+
195+ @ Valid
196+ private Set <ValidAddress > addressSet = new LinkedHashSet <ValidAddress >();
197+
142198 public String getName () {
143199 return name ;
144200 }
@@ -154,6 +210,22 @@ public ValidAddress getAddress() {
154210 public void setAddress (ValidAddress address ) {
155211 this .address = address ;
156212 }
213+
214+ public List <ValidAddress > getAddressList () {
215+ return addressList ;
216+ }
217+
218+ public void setAddressList (List <ValidAddress > addressList ) {
219+ this .addressList = addressList ;
220+ }
221+
222+ public Set <ValidAddress > getAddressSet () {
223+ return addressSet ;
224+ }
225+
226+ public void setAddressSet (Set <ValidAddress > addressSet ) {
227+ this .addressSet = addressSet ;
228+ }
157229 }
158230
159231
0 commit comments