Spring roo не распознает формат даты перед сохранением json - PullRequest
1 голос
/ 06 декабря 2011

Я использую Spring Roo поверх MySQL.Я извлекаю даты с помощью сгенерированных Roo методов JSON, вносю изменения в эти данные в форме браузера и сохраняю их обратно с помощью сгенерированных Roo методов JSON.

Формат даты, которую я получаю, yyyy-MM-dd, стандартный формат даты MySQL.Я использую виджет календаря в браузере, чтобы убедиться, что дата, которую я отправляю, имеет тот же формат.

К сожалению, мои данные неправильно обрабатываются методом ...FromJson(), что приводит к ошибке:

Parsing date 2007-12-12 was not recognized as a date format

Я предполагаю, что проблема в том, что он выходит в виде строки, но JPA чувствует, что ему нужно сгенерировать Date объект для обновления.

Я с удовольствием покажу свойКод об этом, но это ничего, что Ру не сделал для меня.

Мне приходит в голову, что есть кое-что, на что он ссылается, когда говорит «распознается как формат даты».Есть ли где-нибудь, где я могу изменить какие форматы дат он знает?

РЕДАКТИРОВАТЬ: С помощью @ nowaq, вот окончательный ответ:

public static Lease fromJsonToLease(String json) {
    return new JSONDeserializer<Lease>()
            .use(null, Lease.class)
            .use(Date.class, new DateFormatter("yyyy-MM-dd"))
            .deserialize(json);
}

Таким образом, JSONDeserializer знает, с каким классом он имеет дело и строитсредство форматирования для всех дат в этом классе.Злая!

1 Ответ

0 голосов
/ 13 декабря 2011

Ваш вопрос очень связан с этим: Контроллеры Spring-roo REST JSON манипулируют полями даты Посмотрите и убедитесь, что вы используете правильные DateTrasformer (s) со своими десериализаторами JSON.Например,

new JSONDeserializer()
      .use(Date.class, new DateTransformer("yyyy-MM-dd") )
      .deserialize( people );
...