Dans le précédent billet nous avons vu comme persister un nouveau contact créé avec note formulaire. La création de contacts est donc désormais tout à fait opérationnelle, cependant il nous manque encore quelques fonctionnalités. Dans ce billet, nous allons voir comment faciliter l'insertion et le formatage de la date de naissance à l'aide d'un DatePicker YUI.

Ajouter un Behavior de type DatePicker au composant Java

  1. public class EditContactPage extends TemplatePage {
  2.  
  3. public EditContactPage() {
  4. super();
  5. add(new EditContactFrom("editform", new Contact()));
  6.  
  7. }
  8.  
  9. public class EditContactFrom extends Form {
  10.  
  11. public EditContactFrom(String id, Contact contact) {
  12. super(id);
  13.  
  14. setModel(new CompoundPropertyModel(contact));
  15.  
  16. add(new TextField("prenom").setRequired(true));
  17. add(new TextField("nom").setRequired(true).add(
  18. new MaximumLengthValidator(10)));
  19. add(new TextField("dateNaissance", Date.class).add(new DatePicker()));
  20. add(new TextField("email").add(EmailAddressValidator.getInstance()));
  21.  
  22. add(new FeedbackPanel("feedback"));
  23. }
  24.  
  25. @Override
  26. protected void onSubmit() {
  27. Contact contact = (Contact) getModelObject();
  28.  
  29. ZenContactApplication.get().getContacts().add(contact);
  30.  
  31. setResponsePage(ListContactPage.class);
  32. }
  33.  
  34. }
  35. }

Le DatePicker n'a pas pour unique but de faciliter l'insertion d'une date pour l'utilisateur. Il permet également de s'assurer qu'il n'y aura pas de problèmes lors de la conversion de la chaîne de caractères en type Date, puisque le format de date provient du serveur.

Testons : http://localhost:8080/zencontact

DatePicker

La validation côté serveur est maintenant complète. Cependant, pour davantage de fiabilité, il serait utile de valider en amont, côté client. Nous verrons comment procéder dans le prochain billet.

Précédent : Zencontact 10 - Persistance du contact
Suivant : Zencontact 12 - Validation côté client