Wie sollte ich die Klasse zu drei Dropdowns (Datum, Monat, Jahr) an eine einzige Date-Eigenschaft binden, so dass es funktioniert wie für 'Single Request Parameter funktioniert pro Grundstücks-Szenario? Ich denke, a sollte einige benutzerdefinierte PropertyEditors durch Überschreiben initBinder-Methode hinzufügen. Was sonst ?Spring MVC: Binding 3 Dropdowns auf eine Eigenschaft Datum in SimpleFormController
Antwort
Aleksey Kudryavtsev: Sie onBind Methode in dem Controller außer Kraft setzen können, i, die Sie kippen Geige etwas besonderes in Befehlsobjekt, wie
dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);
oder:
Calendar c = Calendar.getInstance();
c.set(year, month, day);
dateField = calendar.getTime();
aber ich würde eher tun Validierung in JavaScript und einige avai verwenden Etikett Datum Picker-Komponente, gibt es viele von ihnen ...
Sie könnten in Ihrem Formular eine ausgeblendete Eingabe erstellen und sie mit JavaScript füllen, wenn der Benutzer das Datum auswählt, und dann an diese Eingabe in Ihrem Befehlsobjekt binden.
Wahrscheinlich werden Sie sowieso Javascript für Dinge wie die Überprüfung der Richtigkeit des Datums verwenden, also warum nicht das fertige Datum in einem Parameter formatieren.
Dann müssen Sie einen Eigenschaftseditor registrieren, der von Zeichenfolge "2008-05-20" in Date-Objekt konvertieren würde.
dann würde ich habe drei Felder in meinem Befehl Objekt - Jahr, Monat, Tag und Standard-Feder Validierung für Datum nicht mehr verwenden würde Überprüfung
Wie würden Sie diese drei Felder in eine Date-Eigenschaft konvertieren? – axk
Ich habe es nicht versucht, aber Sie könnten versuchen, Bindung an MutableDateTime in the Joda library. Es hat separate Setter und Getter für alle drei Felder.
Danke für die Antwort. Das ist eine gute Idee. Aber gibt es eine Möglichkeit, dies auf der Serverseite zu tun? – axk