Die Spezifikation „JSR 303: Bean Validation“ kümmert sich um die einheitliche Validierung von Eingabedaten. Trotz der in der Spezifikation beschriebenen Möglichkeiten ist es in manchen Fällen notwendig, von der Referenzimplementierung (Hibernate Validator) abzuweichen. Ein Beispiel dafür ist die fehlende Unterstützung der @Valid-Annotation im Kontext von JSF.
Zum Glück ermöglicht in einem Apache-MyFaces-Projekt die Bibliothek ExtVal die Auswertung von @Valid innerhalb von JSF. Dazu reicht es, die ExtVal-Bibliotheken mit in die Auslieferung aufzunehmen. Baut man die Auslieferung mit Apache Ivy, dann benötigt man ein Repository. Für die aktuelle Version kann man das Apache Snapshot Repository verwenden, welches in ivysettings.xml
eingetragen werden sollte:
<ibiblio name="apache.snapshot-repository" root="http://people.apache.org/maven-snapshot-repository/" m2compatible="true" />
Die ExtVal-Bibliotheken müssen in ivy.xml
als Abhängigkeiten eingetragen werden:
<dependency org="org.apache.myfaces.extensions.validator" name="myfaces-extval-core" rev="2.0.4-SNAPSHOT" /> <dependency org="org.apache.myfaces.extensions.validator.validation-modules" name="myfaces-extval-bean-validation" rev="2.0.4-SNAPSHOT"/> <dependency org="org.apache.myfaces.extensions.validator.component-support-modules" name="myfaces-extval-generic-support" rev="2.0.4-SNAPSHOT" />
Auflösen, ausliefern – fertig!