Ошибка проверки даты с привязкой формы
Я не использовал Play с 1.x дней, и сейчас я работаю над новым приложением в 2.2, и я просто не могу получить поле Date для проверки. У меня есть 2 поля ввода даты для этой формы события, startDate и endDate, довольно просто. В модели я использую Joda.DateTime, который извлекает из БД и отображает в форме без проблем.
Моя проблема возникает, когда я снова отправляю. Что-то не совпадает с форматированием, я уверен, но из-за лжи я не могу понять, чего он хочет. Это, вероятно, из-за того, что у меня почти нет знаний по Scala, и я, вероятно, просто не понимаю, какие правильные параметры... Вот что у меня есть:
Event.java
@Column(name = "event_end_date")
@Formats.DateTime(pattern="MM/dd/yyyy")
public DateTime eventEndDate;
EventController.java
Form<Event> filledForm = eventForm.bindFromRequest();
events.scala.html
@inputText(eventForm("eventDate"), Symbol("data-date-format") -> "MM/dd/yyyy")
@inputDate(eventForm("eventEndDate"),Symbol("data-date-format") -> "MM/dd/yyyy")
Выше я пробую и inputText, и inputDate, я хотел бы использовать @inputDate, но я возьму все, что работает на этом этапе! При редактировании существующих данных @inputText отображает дату в формате "2014-06-06T04:00:00.000-04:00", поэтому я знаю, что то, что я добавляю к вызову в первой строке, неверно, но не может выяснить, какие параметры в скале.
На теге @inputDate Он не знает, что делать с существующим значением, я думаю, что он не отображает его. В любом случае, когда я отправляю новые значения в поля в формате "MM/dd/yyy", они не проверяются.
Я думаю, здесь есть 2 вопроса.
- Как установить значение даты, чтобы оно отображалось при разных форматах?
- Как мне преобразовать входные данные при отправке формы, чтобы она проверялась как DateTime?
Я просмотрел примеры форм и отметил, что, похоже, мало что относится к датам и формам. Удивительно, что поиск в Google привел к ряду очень смутных предложений, которые нигде не получили их.
2 ответа
Почему бы вам не взять дату в качестве входного текста и проверить дату в методе проверки формы, вот пример использования такого метода. Если проверка прошла успешно, вы можете преобразовать ее в Date без проблем в контроллере.
Я не нашел решения, которое искал, но после небольшой охоты у меня появилась идея создать FormBean для перевода модели. Это позволило мне преобразовать входящие значения при переводе EventForm обратно в модель событий и выполнить там мои преобразования даты. Не идеальное решение для этой формы, которая довольно проста. Я думаю, что это хорошая практика для формы, которая представляет несколько моделей и / или управляет более сложными состояниями и метаданными, не связанными с моделью.
Ссылка на идею здесь: введите описание ссылки здесь
Кроме того, это решило проблему с помощником @InputDate и форматированием даты, когда средство получения для EventForm теперь преобразовывает дату в требуемый формат html5 "yyy-mm-dd". Однажды в этом формате браузер (chrome) знает, что с ним делать, и все отображается нормально. Я до сих пор не знаю, как лучше всего выполнить преобразование без поддержки формы, но сейчас я читаю о Scala, и у меня есть ощущение, что я пойму это, добавив немного Scala под свой пояс. Я уже убежден, что базовые идеи о Scala принесут пользу разработчикам Java при попытке кодирования шаблонов Scala.
Надеюсь, это поможет следующему новичку в Scala!