Spring MVC: associazione di 3 menu a discesa a una proprietà della data in SimpleFormController
-
03-07-2019 - |
Domanda
Come devo configurare la classe per associare tre menu a discesa (data, mese, anno) a una singola proprietà Date in modo che funzioni come funziona per lo scenario "parametro richiesta singola per proprietà"? Immagino che dovrei aggiungere alcuni PropertyEditor personalizzati sovrascrivendo il metodo initBinder. Cos'altro?
Soluzione
Aleksey Kudryavtsev: puoi sovrascrivere il metodo onBind nel tuo controller, nel quale non puoi armeggiare qualcosa di speciale nell'oggetto comando, come
dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);
o
Calendar c = Calendar.getInstance();
c.set(year, month, day);
dateField = calendar.getTime();
ma preferirei fare la convalida in javascript e utilizzare alcuni componenti disponibili per la selezione della data, ce ne sono molti ...
Altri suggerimenti
È possibile creare un input nascosto nel modulo e popolarlo utilizzando JavaScript quando l'utente seleziona la data, quindi associarsi a questo input nell'oggetto comando.
Probabilmente userete comunque javascript per cose come controllare la correttezza della data, quindi perché non formattare la data pronta per l'uso in un parametro.
Quindi devi registrare un editor di proprietà che converta dalla stringa "20/05/2008" " all'oggetto Date.
allora avrei tre campi nel mio oggetto comando - anno, mese, giorno e userei la validazione standard della primavera per il controllo della data
Non l'ho provato, ma potresti provare a legare a MutableDateTime nella libreria Joda . Ha setter e getter separati per tutti e tre i campi.