Après s'être assuré de la validation de notre formulaire, nous pouvons enfin persister ce nouveau contact dans notre liste.
Persister le nouveau contact
Cette étape s'effectue au moment de la soumission du formulaire. Nous allons donc surcharger la méthode onSubmit() de notre composant EditContactForm.
public class EditContactPage extends TemplatePage { public EditContactPage() { super(); add(new EditContactFrom("editform", new Contact())); } public class EditContactFrom extends Form { public EditContactFrom(String id, Contact contact) { super(id); setModel(new CompoundPropertyModel(contact)); add(new TextField("prenom").setRequired(true)); add(new TextField("nom").setRequired(true).add(new MaximumLengthValidator(10))); add(new TextField("dateNaissance", Date.class)); add(new TextField("email").add(EmailAddressValidator.getInstance())); add(new FeedbackPanel("feedback")); } @Override protected void onSubmit() { Contact contact = (Contact) getModelObject(); ZenContactApplication.get().getContacts().add(contact); } } }
Nous récupérons ici l'objet de type Contact modifié à partir du modèle de notre formulaire, puis nous l'ajoutons à notre liste de contacts.
Il est intéressant de remarquer que Wicket fait usage du pattern "Redirect After Post" afin d'empêcher l'utilisateur de soumettre le même formulaire en rafraîchissant sa page après l'envoi d'une première requête POST.
Vous pouvez tester vous même : http://localhost:8080/zencontact
Rappelons que notre Collection de contacts est un Set qui ne peut contenir d'éléments dupliqués !
Rediriger vers la liste de contacts
Une fois le contact correctement persisté, nous pouvons rediriger le client vers la page listant les contacts (ListContactPage), afin d'y voir le contact nouvellement ajouté.
public class EditContactPage extends TemplatePage { public EditContactPage() { super(); add(new EditContactFrom("editform", new Contact())); } public class EditContactFrom extends Form { public EditContactFrom(String id, Contact contact) { super(id); setModel(new CompoundPropertyModel(contact)); add(new TextField("prenom").setRequired(true)); add(new TextField("nom").setRequired(true).add(new MaximumLengthValidator(10))); add(new TextField("dateNaissance", Date.class)); add(new TextField("email").add(EmailAddressValidator.getInstance())); add(new FeedbackPanel("feedback")); } @Override protected void onSubmit() { Contact contact = (Contact) getModelObject(); ZenContactApplication.get().getContacts().add(contact); setResponsePage(ListContactPage.class); } } }
L'ajout de contact est maintenant opérationnel. Cependant notre formulaire ne possède pas encore toutes les fonctionnalités requises, nous verrons dans un prochain billet comment faciliter l'insertion de la date de naissance de notre contact à l'aide d'un DatePicker.
Précédent : Zencontact 9 -Validation côté serveur
Suivant : Zencontact 11 - DatePicker

