Form Validation

25
Formular-Validierung Konzepte, API und eigene Validatoren für Benutzereingaben

Transcript of Form Validation

Page 1: Form Validation

Formular-ValidierungKonzepte, API und eigene Validatoren für Benutzereingaben

Page 2: Form Validation

Hinweis

Die Präsentationen und die damit verbundenen Materialien, die während der Konferenz angeboten werden umfassen auch Aussagen über die Produktentwicklungspläne von XDEV Software. Viele Faktoren können erheblichen Einfluss auf Produktentwicklungspläne, die Art und den Zeitpunkt der zukünftigen Produkt-Releases haben. Dementsprechend dienen die Informationen, ausschließlich als unverbindliche Vorschau und stellen keine Verpflichtung dar, jegliches Material, Code oder Funktionalität zu liefern und sollten nicht für Kaufentscheidungen herangezogen werden.

Page 3: Form Validation

Überblick

Verschiedene Ebenen der Daten-Validierung

Vorhandene Möglichkeiten der Eingabeprüfung Passende Eingabekomponenten Diese richtig konfigurieren Zugrunde liegende API

Eigene Validatoren schreiben API Klassen nutzen Eigene Klassen schreiben

Rückmeldung an den Benutzer

Page 4: Form Validation

Ebenen der Daten-Validierung

GUI

VT

Datenbank

XML, CSV, …

Page 5: Form Validation

GUI-Eingabeprüfung

Erste Ebene der Daten-Validierung Ungültige Eingaben abfangen Passende Eingabekomponenten

verwenden Für jeden Typ gibt es passende

Komponenten Die Komponenten richtig Konfigurieren

Rückmeldung an den Benutzer Nicht abschrecken, sondern hinweisen Evtl. Alternativen anbieten

Page 6: Form Validation

Eingabekomponenten

Typ in der VT / DB Komponenten

Zeichenketten Textfield, Textarea

Zahlen FormattedTextField, Spinner, Slider

Datum DateTextField, FormattedTextField

Boolean CheckBox, RadioButton

Blob FileChooser

Farbe ColorComboBox

Verweise List/ComboBox, Tables

Page 7: Form Validation

Eingabekomponenten – richtig konfigurieren Zahlenbereiche definieren

Alter: 0 - 99 Zeichenketten-Länge beschränken

Ort: max. 50 Zeichen Datumsbereich beschränken

Hotelbuchung: Jetzt – in 1 Jahr Evtl. Vorauswahlen anbieten

Geschlecht: männlich, weiblich, sonstiges

Page 8: Form Validation

Rückmeldung an den Benutzer

Page 9: Form Validation

Rückmeldung an den Benutzer

Page 10: Form Validation

Rückmeldung an den Benutzer

Page 11: Form Validation

Rückmeldung an den Benutzer

Page 12: Form Validation

Bestehende Validatoren

RequiredFieldValidator

NumberRangeValidator

StringLengthValidator

EmailValidator

Page 13: Form Validation

Bestehende Validatoren

Page 14: Form Validation

API

Zu validierendes

Objekt

Validator

Validator

Validator

Page 15: Form Validation

APIValidation

Object 1• Validator• Validator

Object 2• Validator• Validator

Object 3• Validator• Validator

ValidationException

Exceptions sammelnGesamtergebnis verarbeiten

Bei Exception abbrechen

Page 16: Form Validation

API

Formular

Validation validateFormularComponents() FormularComponent

FormularComponent

FormularComponent

FormularComponent

validateState(Validation validation)

Page 17: Form Validation

API

Validation Steuert Validations-Prozess

Abbruch bei Exception? Sammelt ValidationExceptions Bietet Methoden zur Auswertung

Page 18: Form Validation

API

ValidationException Componente Severity (Error, Warning, Information) Title, Message Exception (Auslöser)

Page 19: Form Validation

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;}

Page 20: Form Validation

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;

}

Page 21: Form Validation

Formular

public Validation validateFormularComponents(){

Validation validation = new Validation();

for(FormularComponent component : form.formComponents()){

try{

component.validateState(validation);}catch(ValidationException e){

// cancelbreak;

}}

return validation;}

Page 22: Form 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;}

}}

}

Page 23: Form Validation

Demo

Page 24: Form Validation

Q / A¿?!

Page 25: Form Validation

XDEV 4Jetzt downloadenxdev-software.de