GEDOPLAN
Jakarta EE (Java EE)

Bean Validation auf Collections

Jakarta EE (Java EE)

Die zum Java-EE-6-Umfang gehörende Spezifikation Bean Validation (JSR 303) stellt einen wesentlichen Schritt zur einheitlichen Validierung von Geschäftsdaten dar. Wie von einer ersten Version zu erwarten, gibt es allerdings noch Bereiche mit Verbesserungspotenzial.

Mit BV ist es leicht möglich, z. B. ein Feld, das eine Telefonnummer enthalten soll, mit einem entsprechenden Constraint zu belegen:

@ValidTelNumber
private String telefonNummer;

Dabei sei angenommen, dass ValidTelNumber eine passend definierte Annotation ist, bspw. auf Basis des Standard-Constraints Pattern mit Hilfe von Constraint Composition. Das Vorgehen dazu ist im entsprechenden Kapitel der Spezifikation recht gut beschrieben.

Was aber, wenn statt der einzelnen Telefonnummer eine Collection von Telefonnummern validiert werden soll? Dazu gibt es leider keine direkte Unterstützung durch den Standard. Für eine solche ‘transitive’ Validierung ist prinzipiell das Constraint Valid vorgesehen, was aber voraussetzt, dass entsprechende Validierungsregeln für den Elementtyp der Collection definiert sind. Im Beispielszenario ist dieser Typ aber String, hat also keine Gültigkeitsregeln – erst recht nicht für den speziellen Anwendungsfall ‘Telefonnummer’.

Derzeit bleibt nur die Möglichkeit, eine individuelle Validierungsmethode in Kombination mit dem Standard-Constraint AssertTrue einzusetzen:

private List telefonNummern = ...;

@AssertTrue(message = "{...}")
  protected boolean isTelefonNummernValid()
      {
          if (this.telefonNummern != null)
          for (String telNo : this.telefonNummern.getValues())
          if (!TelNumberValidator.isValid(telNo))
              return false;
          return true;
  }

Hier wäre eine Erweiterung der Spezifikation wünschenswert, z. B. mit Hilfe einer Parametrisierung von Valid:

@Valid(constraints={@ValidTelNumber}
private List telefonNummern = …;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

IT-Training - GEDOPLAN
Webprogrammierung

Angular 2 – Lazy Load Modules

Unsere bisherigen Beispiele sind alle davon ausgegangen das es ein zentrales Modul gibt dessen Referenzen von Webpack analysiert und in…
hypnosis 4041584 640
Webprogrammierung

Reaktive Templates in Angular

Die Arbeit mit Observables ist sicherlich täglich Brot für die meisten Angular Entwickler. Ein Template-Feature ist dabei allerdings vielen Entwicklern…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!