Elemente eines String-Arrays mit Java Bean Validation validieren

Ich habe eine einfache Klasse, die eine ihrer Eigenschaften als String-Array hat. GemäßDie document, das @Valid für ein Array, eine Sammlung usw. verwendet, validiert jedes Element des Arrays / der Sammlung rekursiv.

@Valid
@Pattern(regexp="^[_ A-Za-z0-9]+$")
public String[] defaultAppAdminRoles;

die obige Anmerkung zu der Eigenschaft erzeugt die folgende Ausnahme:

Exception in thread "main" javax.validation.UnexpectedTypeException: No validator could be found for type java.lang.String[]. See: @Pattern at public java.lang.String[] com.hm.vigil.platform.ops.model.Application.defaultAppAdminRoles
at org.apache.bval.jsr303.AnnotationProcessor.checkOneType(AnnotationProcessor.java:326)
at org.apache.bval.jsr303.AnnotationProcessor.getConstraintValidator(AnnotationProcessor.java:301)
at org.apache.bval.jsr303.AnnotationProcessor.applyConstraint(AnnotationProcessor.java:241)
at org.apache.bval.jsr303.AnnotationProcessor.processAnnotation(AnnotationProcessor.java:149)
at org.apache.bval.jsr303.AnnotationProcessor.processAnnotations(AnnotationProcessor.java:90)
at org.apache.bval.jsr303.Jsr303MetaBeanFactory.processClass(Jsr303MetaBeanFactory.java:134)
at org.apache.bval.jsr303.Jsr303MetaBeanFactory.buildMetaBean(Jsr303MetaBeanFactory.java:95)
at org.apache.bval.MetaBeanBuilder.buildForClass(MetaBeanBuilder.java:131)
at org.apache.bval.MetaBeanManager.findForClass(MetaBeanManager.java:102)
at org.apache.bval.jsr303.ClassValidator.validate(ClassValidator.java:140)
at com.hm.vigil.platform.commons.AbstractValidatable.isValid(AbstractValidatable.java:33)
at com.hm.vigil.platform.ops.model.Application.main(Application.java:54)

ch verwende Apache BVal als Validierungsanbiete

Die Frage, ist die obige Methode richtig?

Wenn dies nicht korrekt ist, wie kann ein Array / eine Sammlung mit Bean-Validierung korrekt validiert werden?

Wenn es richtig ist, gibt es dann eine Einschränkung von Apache BVal?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage