Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Form Validation
-
Upload
underberger -
Category
Documents
-
view
9 -
download
0
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