Дата в Playframework - PullRequest
       3

Дата в Playframework

2 голосов
/ 07 ноября 2011

У меня есть модель с информацией о дате:

package models;
import java.util.Date;
import javax.persistence.*;

import play.data.binding.As;
import play.db.jpa.*;
@Entity
public class testing extends Model {
…
public  Date date;
// I even tried public @As("yyyy-MM-dd") Date date;

…
public test1 {…date…}
}

Тогда у меня есть контроллер, который получает пользовательскую дату (и другую информацию), сохраняет в базу данных

public static void post(… @As("yyyy-MM-dd") Date date, …) {
}

Другие данные работают хорошо, я могу сохранить их все в базе данных, кроме даты. После запуска вся информация публикуется в MySql, но поле Date все еще имеет значение Null

Отладочная информация для даты в контроллере выглядит следующим образом: 7 ноября 2011 г., 12:00:00 Поэтому я думаю, что это может быть конфликт в типе контроллера и модели. Но как? Пожалуйста, помогите мне.

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

Я использую Play 1.2.3 / 1.2.4-RC2,

Правильно обрабатывает отправку даты, но я сделал две небольшие корректировки:

1) Добавьте @Temporal(TemporalType.DATE) до объявления даты. Без этого дата является отметкой времени (дата включает время), но я думаю, что это не проблема:

...
@Entity
public class Testing extends Model {
  ...
  @Temporal(TemporalType.DATE)
  public Date date;
  ...
}

2) В application.conf я настроил формат даты для всех моих локалей

...
# Date format
# ~~~~~
date.format=yyyy-MM-dd
date.format.it=dd/MM/yyyy
date.format.en=MM/dd/yyyy
date.format.fr=dd/MM/yyyy
#

Воспроизводит записи сообщений правильно и в основном корректно проверяет параметры (например, Long / Integer / Float / Double / BigDecimal / Date) на основе текущей локали.

Надеюсь, это поможет.

2 голосов
/ 07 ноября 2011

Аннотация As в контроллере здесь, чтобы сообщить Play, как преобразовать параметр запроса в Date.

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

Попробуйте увидеть в контроллере значение "request.params.get (" date "). Это не тот формат, который вы указали в аннотации As, тогда Play не можетчтобы преобразовать строку в Date.

Я думаю, что это ваша проблема. Поэтому вы должны изменить свое представление, чтобы опубликовать правильную строку или изменить аннотацию As, чтобы обеспечить правильный формат в соответствии с полученной строкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...