Validate elements of a String array with Java Bean Validation -
i have simple class has 1 of properties string array. per this document, using @valid on array, collection etc. recursively validate each element of array/collection.
@valid @pattern(regexp="^[_ a-za-z0-9]+$") public string[] defaultappadminroles;
the above annotation on property generates following exception:
exception in thread "main" javax.validation.unexpectedtypeexception: no validator found type java.lang.string[]. see: @pattern @ public java.lang.string[] com.hm.vigil.platform.ops.model.application.defaultappadminroles @ org.apache.bval.jsr303.annotationprocessor.checkonetype(annotationprocessor.java:326) @ org.apache.bval.jsr303.annotationprocessor.getconstraintvalidator(annotationprocessor.java:301) @ org.apache.bval.jsr303.annotationprocessor.applyconstraint(annotationprocessor.java:241) @ org.apache.bval.jsr303.annotationprocessor.processannotation(annotationprocessor.java:149) @ org.apache.bval.jsr303.annotationprocessor.processannotations(annotationprocessor.java:90) @ org.apache.bval.jsr303.jsr303metabeanfactory.processclass(jsr303metabeanfactory.java:134) @ org.apache.bval.jsr303.jsr303metabeanfactory.buildmetabean(jsr303metabeanfactory.java:95) @ org.apache.bval.metabeanbuilder.buildforclass(metabeanbuilder.java:131) @ org.apache.bval.metabeanmanager.findforclass(metabeanmanager.java:102) @ org.apache.bval.jsr303.classvalidator.validate(classvalidator.java:140) @ com.hm.vigil.platform.commons.abstractvalidatable.isvalid(abstractvalidatable.java:33) @ com.hm.vigil.platform.ops.model.application.main(application.java:54)
i using apache bval validation provider.
the question, above method correct?
if not correct, correct way validate array/collection bean validation?
if correct, limitation of apache bval?
by adding @valid
annotation you've done, validation algorithm applied on each element (validation of element constraints).
in case string class has no constraints. @pattern
constraint you've added applied array , not on each element of it. since @pattern
constraint cannot applied on array, getting error message.
you can create custom validation constraint array (see hibernate docs more info) or can use wrapper class @jordi castilla mentioned.
Comments
Post a Comment