Ошибка проверки даты с привязкой формы

Я не использовал 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 вопроса.

  1. Как установить значение даты, чтобы оно отображалось при разных форматах?
  2. Как мне преобразовать входные данные при отправке формы, чтобы она проверялась как DateTime?

Я просмотрел примеры форм и отметил, что, похоже, мало что относится к датам и формам. Удивительно, что поиск в Google привел к ряду очень смутных предложений, которые нигде не получили их.

2 ответа

Почему бы вам не взять дату в качестве входного текста и проверить дату в методе проверки формы, вот пример использования такого метода. Если проверка прошла успешно, вы можете преобразовать ее в Date без проблем в контроллере.

Я не нашел решения, которое искал, но после небольшой охоты у меня появилась идея создать FormBean для перевода модели. Это позволило мне преобразовать входящие значения при переводе EventForm обратно в модель событий и выполнить там мои преобразования даты. Не идеальное решение для этой формы, которая довольно проста. Я думаю, что это хорошая практика для формы, которая представляет несколько моделей и / или управляет более сложными состояниями и метаданными, не связанными с моделью.

Ссылка на идею здесь: введите описание ссылки здесь

Кроме того, это решило проблему с помощником @InputDate и форматированием даты, когда средство получения для EventForm теперь преобразовывает дату в требуемый формат html5 "yyy-mm-dd". Однажды в этом формате браузер (chrome) знает, что с ним делать, и все отображается нормально. Я до сих пор не знаю, как лучше всего выполнить преобразование без поддержки формы, но сейчас я читаю о Scala, и у меня есть ощущение, что я пойму это, добавив немного Scala под свой пояс. Я уже убежден, что базовые идеи о Scala принесут пользу разработчикам Java при попытке кодирования шаблонов Scala.

Надеюсь, это поможет следующему новичку в Scala!

Другие вопросы по тегам