GEDOPLAN

Bean Validation auf Collections

Alle

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 = …;

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

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

Schulungen mit der selben Kategorie:

Blogkategorie: Alle
Es wurden keine Ergebnisse gefunden.

weitere Artikel

Kontakt

Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!

Tim Neumann

Geschäftsleitung

GEDOPLAN GmbH
Stieghorster Straße 60
33605 Bielefeld

GEDOPLAN GmbH
Kantstraße 164
10623 Berlin

    Kontakt

    Tim Neumann

    Geschäftsleitung

    GEDOPLAN GmbH
    Stieghorster Straße 60
    33605 Bielefeld

    GEDOPLAN GmbH
    Kantstraße 164
    10623 Berlin

    Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!