Весенний MVC:Привязка трех раскрывающихся списков к свойству даты в SimpleFormController

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Как мне настроить класс для привязки трех раскрывающихся списков (дата, месяц, год) к одному свойству Date, чтобы он работал так же, как и для сценария «один параметр запроса для каждого свойства»?Я думаю, следует добавить несколько пользовательских PropertyEditors, переопределив метод initBinder.Что еще ?

Это было полезно?

Решение

Алексей Кудрявцев:вы можете переопределить метод onBind в своем контроллере, и вы не сможете изменить что-то особенное в командном объекте, например

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

или:

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

но я бы предпочел выполнить проверку в javascript и использовать какой-нибудь доступный компонент выбора даты, их много...

Другие советы

Вы можете создать скрытый ввод в своей форме и заполнить его с помощью JavaScript, когда пользователь выбирает дату, а затем привязать его к этому вводу в своем командном объекте.

Вероятно, вы в любом случае будете использовать JavaScript для таких вещей, как проверка правильности даты, так почему бы не отформатировать готовую к использованию дату в одном параметре.

Затем вам необходимо зарегистрировать редактор свойств, который будет конвертировать строку «2008-05-20» в объект Date.

тогда у меня будет три поля в моем командном объекте - год, месяц, день, и я буду использовать стандартную проверку Spring для проверки даты

Я не пробовал, но вы можете попробовать привязать к MutableDateTime в библиотеке Joda.Он имеет отдельные сеттеры и геттеры для всех трех полей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top