#playframework #playframework-2.2
#playframework #playframework-2.2
Вопрос:
Я не пользовался Play с 1.x дней, и сейчас я работаю над новым приложением в версии 2.2, и я просто не могу получить поле даты для проверки. У меня есть 2 поля ввода даты для этой формы события, StartDate и EndDate, довольно простые. В модели я использую Joda.Дата-время, которое извлекается из базы данных и отображается в форме без проблем.
Моя проблема возникает при повторной отправке. Я уверен, что что-то не соответствует форматированию, но, черт возьми, я не могу понять, чего оно хочет. Вероятно, это связано с почти полным отсутствием знаний 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», поэтому я знаю, что то, что я добавляю к вызову в первой строке, неверно, но не могу понять, какие параметры в scala.
Я полагаю, что тег @inputDate не знает, что делать с существующим значением, поэтому он его не отображает. В любом случае, когда я отправляю новые значения в поля в формате «ММ / дд / гггг», они не проверяются.
Я думаю, здесь есть 2 вопроса.
- Как мне установить значение даты, чтобы оно отображалось при разных форматах?
- Как мне преобразовать входные данные при отправке формы, чтобы они проверялись как DateTime?
Я просмотрел примеры форм и отметил, что, похоже, там мало что говорится о датах и формах. Удивительно, но поиск в Google привел к ряду очень расплывчатых предложений, которые никуда не привели.
Ответ №1:
Я не нашел решения, которое искал, но после небольшого поиска у меня появилась идея создать FormBean для перевода модели. Это позволило мне преобразовать входящие значения при переводе EventForm обратно в Event Model и выполнить мои преобразования даты там. Не идеальное решение для этой формы, которая довольно проста. Я думаю, что это хорошая практика, хотя для форм, которые представляют несколько моделей и / или управляют более сложными состояниями и метаданными, не связанными с моделью.
Ссылка на идею здесь: введите описание ссылки здесь
Кроме того, это решило проблему с помощником @InputDate и форматированием даты, где средство получения для EVENTFORM теперь преобразует дату в требуемый формат html5 «гггг-мм-дд». После перехода к этому формату браузер (chrome) знает, что с ним делать, и все отображается нормально. Я все еще не знаю, как лучше выполнить преобразование без компонента поддержки формы, но сейчас я читаю о Scala, и у меня есть ощущение, что я разберусь с этим, имея за плечами немного больше Scala. Я уже убежден, что базовый tut на Scala принесет пользу разработчикам Java при попытке закодировать шаблоны scala.
Надеюсь, это поможет следующему новичку в scala!
Ответ №2:
Почему бы вам не использовать дату в качестве входного текста и не проверить дату методом form validate, вот пример использования такого метода. Если проверка прошла успешно, вы можете без проблем преобразовать ее в дату в контроллере.