Sie sind auf Seite 1von 25

Formular-Validierung

Konzepte, API und eigene Validatoren fr Benutzereingaben

Hinweis
Die Prsentationen und die damit verbundenen Materialien, die whrend der Konferenz angeboten werden umfassen auch Aussagen ber die Produktentwicklungsplne von XDEV Software. Viele Faktoren knnen erheblichen Einfluss auf Produktentwicklungsplne, die Art und den Zeitpunkt der zuknftigen Produkt-Releases haben. Dementsprechend dienen die Informationen, ausschlielich als unverbindliche Vorschau und stellen keine Verpflichtung dar, jegliches Material, Code oder Funktionalitt zu liefern und sollten nicht fr Kaufentscheidungen herangezogen werden.

berblick
Verschiedene Ebenen der DatenValidierung Vorhandene Mglichkeiten der Eingabeprfung
Passende Eingabekomponenten Diese richtig konfigurieren Zugrunde liegende API

Eigene Validatoren schreiben


API Klassen nutzen Eigene Klassen schreiben

Ebenen der Daten-Validierung


GUI

VT XML, CSV,

Datenbank

GUI-Eingabeprfung
Erste Ebene der Daten-Validierung Ungltige Eingaben abfangen Passende Eingabekomponenten verwenden
Fr jeden Typ gibt es passende Komponenten Die Komponenten richtig Konfigurieren

Rckmeldung an den Benutzer


Nicht abschrecken, sondern hinweisen Evtl. Alternativen anbieten

Eingabekomponenten
Typ in der VT / DB Zeichenketten Zahlen Datum Boolean Blob Farbe Verweise Komponenten Textfield, Textarea FormattedTextField, Spinner, Slider DateTextField, FormattedTextField CheckBox, RadioButton FileChooser ColorComboBox List/ComboBox, Tables

Eingabekomponenten richtig konfigurieren


Zahlenbereiche definieren
Alter: 0 - 99

Zeichenketten-Lnge beschrnken
Ort: max. 50 Zeichen

Datumsbereich beschrnken
Hotelbuchung: Jetzt in 1 Jahr

Evtl. Vorauswahlen anbieten


Geschlecht: mnnlich, weiblich, sonstiges

Rckmeldung an den Benutzer

Rckmeldung an den Benutzer

Rckmeldung an den Benutzer

Rckmeldung an den Benutzer

Bestehende Validatoren

RequiredFieldValidator NumberRangeValidator StringLengthValidator

EmailValidator

Bestehende Validatoren

API
Validator

Zu validierendes Objekt

Validator

Validator

API
Validation

Object 1
Validator Validator

Object 2
Validator Validator

ValidationException

Bei Exception abbrechen


Object 3
Validator Validator

Exceptions sammeln Gesamtergebnis verarbeiten

API
Formular FormularComponent validateState(Validation validation)

Validation validateFormularComponents()

FormularComponent

FormularComponent

FormularComponent

API
Validation
Steuert Validations-Prozess
Abbruch bei Exception?

Sammelt ValidationExceptions Bietet Methoden zur Auswertung

API
ValidationException
Componente Severity (Error, Warning, Information) Title, Message Exception (Auslser)

Validator
/** * Interface to add a user defined validation to a component * * @author XDEV Software * @since 3.1 */

public interface Validator<T>


{ /** * Validates a component's state. * <p> * If the component is not valid a {@link ValidationException} is thrown, * otherwise the method returns normally. * * @param component * the component to be validated * @throws ValidationException * if the component's state is not valid */

public void validate(T component) throws ValidationException;


}

FormularComponent
public interface FormularComponent<C extends JComponent>
{ /** * Calls {@link Validator#validate(Object)} of all registered * {@link Validator}s. * <p> * Every {@link ValidationException} is recorded in the * <code>validation</code> object, and if * {@link Validation#continueValidation(ValidationException)} returns * <code>false</code> this exception is re-thrown by this method. * * @param validation * the validation process object * @throws ValidationException * @see #verify * @since 3.1 */

public void validateState(Validation validation) throws ValidationException;


}

Formular
public Validation validateFormularComponents() { Validation validation = new Validation(); for(FormularComponent component : form.formComponents()) { try { component.validateState(validation); } catch(ValidationException e) { // cancel break; } }

return validation;
}

FormularComponent
public void validateState(Validation validation) throws ValidationException { for(Validator validator : getValidators()) { try { validator.validate(component); } catch(ValidationException e) { validation.record(e); if(!validation.continueValidation(e)) { throw e; }

}
} }

Dem o

Q/A

XDEV 4
Jetzt downloaden xdev-software.de