Spring MVC: Lier 3 listes déroulantes à une propriété de date dans SimpleFormController

StackOverflow https://stackoverflow.com/questions/161485

  •  03-07-2019
  •  | 
  •  

Question

Comment dois-je configurer la classe pour lier trois listes déroulantes (date, mois, année) à une propriété Date unique afin qu'elle fonctionne comme prévu pour le scénario "Paramètre de requête unique par propriété"? Je suppose qu’il faudrait ajouter des PropertyEditors personnalisés en redéfinissant la méthode initBinder. Quoi d'autre?

Était-ce utile?

La solution

Aleksey Kudryavtsev: vous pouvez remplacer la méthode onBind dans votre contrôleur, c'est-à-dire que vous ne pouvez pas modifier quelque chose de spécial dans un objet de commande, comme

dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);

ou:

Calendar c = Calendar.getInstance();
c.set(year, month, day);
dateField = calendar.getTime();

mais je préférerais faire une validation en javascript et utiliser un composant de sélection de date disponible, il y en a beaucoup ...

Autres conseils

Vous pouvez créer une entrée masquée dans votre formulaire et la renseigner à l'aide de JavaScript lorsque l'utilisateur sélectionne une date, puis lier cette entrée à votre objet de commande.

Vous utiliserez probablement de toute façon du javascript, notamment pour vérifier l'exactitude de la date, alors pourquoi ne pas formater la date prête à l'emploi en un seul paramètre.

Ensuite, vous devez enregistrer un éditeur de propriétés convertissant une chaîne "" 2008-05-20". à l'objet Date.

alors j'aurais trois champs dans mon objet de commande - année, mois, jour et utiliserais la validation standard du ressort pour la vérification de la date

Je ne l'ai pas essayé, mais vous pouvez essayer de vous lier à MutableDateTime dans la bibliothèque Joda . Il possède des setters et des getters séparés pour les trois champs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top