Formulare und Validierung
Formulare
-
Die
Form-Komponente repräsentiert ein HTML-Formular und behandelt serverseitig das Absenden des Formulars, z.B.:Form<Car> form = new Form<Car>("carForm", new CompoundPropertyModel<Car>(car)); add(form); form.add(new TextField<String>("name")); form.add(new TextField<String>("vendor.name")); form.add(new Button("submit"));
-
Markup:
<form wicket:id="carForm"> Name: <input wicket:id="name"/> Hersteller: <input wicket:id="vendor.name"/> <input wicket:id="submit" type="submit"/> </form>
Formular-Komponenten
- Eingabefelder:
TextField, PasswordTextField, TextArea - Auswahlfelder:
ListChoice, ListMultipleChoice, CheckBoxMultipleChoice, DropDownChoice, CheckBox - Datei-Upload:
FileUploadField,MultiFileUploadField - Formular senden:
Button, SubmitLink
Konverter
-
Für Formularkomponenten kann der Datentyp mit
setTypeexplizit festgelegt werden:someFormComponent.setType(Date.class);
-
Für Standard-Typen stellt Wicket automatisch Konverter bereit.
-
Eigene Konverter können in der Applikationsklasse durch Überschreiben von
newConverterLocatorkonfiguriert werden.
Validierung
-
Pflichtfelder können mit
setRequiredmarkiert werden:someFormField.setRequired(true)
-
Validatoren (
IValidator) können mitaddhinzugefügt werden:someFormField.add(StringValidator.maximumLength(40));
Vorgefertigte Validatoren
StringValidator: exactLength, lengthBetween, maximumLength, minimumLengthPatternValidatorMinimumValidator,MaximumValidator,RangeValidatorEmailAddressValidatorUrlValidatorDateValidatorCreditCardValidator
Feldübergreifende Validatoren
-
Feldübergreifende Validierungsregeln können dem Formular hinzugefügt werden:
form.add(new EqualPasswordInputValidator(someField1, someField2));
-
Vorgefertigte Validatoren:
EqualInputValidator,EqualPasswordInputValidator
Abarbeitung des Absendens von Formularen
- Prüfung der Pflichtfelder.
- Konvertierung.
- Validierung.
- Jeder Fehler in einem der vorangegangenen Schritte führt zum Abbruch.
- Wenn alle Prüfungen erfolgreich waren, wird das Modell der Formularkomponenten aktualisiert.
- Auslösende Formularkomponente wird benachrichtigt (z.B.
Button.onSubmit). - Formular wird benachrichtigt (
Form.onSubmit).
Anzeige von Validierungsfehlern
-
Mit einem
FeedbackPanelkönnen Validierungsfehler textuell angezeigt werden:add(new FeedbackPanel("feedback"));
-
Markup:
<div wicket:id="feedback"></div>
-
Ergebnis:

Feedback-Nachrichten
-
Jede Komponente kann Feedback-Nachrichten erzeugen, die im
FeedbackPanelgesammelt angezeigt werden:Component.info(String message)Component.warning(String message)Component.error(String message)
Markierung von Formularfeldern mit Eingabefehlern
-
Validierungsfehler können mit
FormComponentFeedbackBorderhervorgehoben werden:FormComponentFeedbackBorder fbName = new FormComponentFeedbackBorder("feedbackName"); add(fbName); TextField<String> name = new TextField<String>("name"); fbName.add(name);
-
Markup:
<div wicket:id="fbName"><input wicket:id="name"/></div>
-
Ergebnis:

Weitere Informationen
- Wicket in Action, 6. Processing user input using forms
- Wicket Component Reference http://www.wicket-library.com/wicket-examples/compref/
- Wiki pages about forms http://cwiki.apache.org/WICKET/forms.html
- User friendly form validation with Wicket http://stuq.nl/weblog/2008-09-03/user-friendly-form-validation-with-wicket

