Form Validation

Post on 20-Jan-2016

9 views 0 download

Transcript of Form Validation

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

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.

Ü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

Ebenen der Daten-Validierung

GUI

VT

Datenbank

XML, CSV, …

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

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

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

Rückmeldung an den Benutzer

Rückmeldung an den Benutzer

Rückmeldung an den Benutzer

Rückmeldung an den Benutzer

Bestehende Validatoren

RequiredFieldValidator

NumberRangeValidator

StringLengthValidator

EmailValidator

Bestehende Validatoren

API

Zu validierendes

Objekt

Validator

Validator

Validator

APIValidation

Object 1• Validator• Validator

Object 2• Validator• Validator

Object 3• Validator• Validator

ValidationException

Exceptions sammelnGesamtergebnis verarbeiten

Bei Exception abbrechen

API

Formular

Validation validateFormularComponents() FormularComponent

FormularComponent

FormularComponent

FormularComponent

validateState(Validation validation)

API

Validation Steuert Validations-Prozess

Abbruch bei Exception? Sammelt ValidationExceptions Bietet Methoden zur Auswertung

API

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

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){

// cancelbreak;

}}

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

}}

}

Demo

Q / A¿?!

XDEV 4Jetzt downloadenxdev-software.de