/ / Grails Data Binding Неуспешно за полето за дата - json, grails, свързване на данни, заявка

Съобщението за гресиране на данни за греси не е успешно за полето за данни - json, граали, свързване на данни, заявка

Искам да обвържа домейн клас с вложени домейн обекти към request.JSON данни. Той работи добре, с изключение на поле от тип Date в вложен клас домейн, той винаги дава null. Тук е request.json

[..., cardInfo:[expiryDate:2016-07-21, ccv:3455, cardNumber:4111111111111111], ....]

Опитах се да свържа тези json по няколко начина:

 MyClass myClass=new MyClass(request.JSON)

И

myClass.properties=request.JSON
bindData(myClass,request.JSON)
bindData(myClass.cardInfo,request.JSON.cardInfo)

Нищо не действаше за задължително изтичане на срока. Дали това е грешка или има нещо нередно, което правя?

UPDATE:

Аз използвам Grails 2.4.2. Аз също имам тази линия, включена в моя конфигурационен файл

grails.databinding.dateFormats = ["dd-MM-yyyy","MM-dd-yyyy","yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss.S"]

Отговори:

1 за отговор № 1

Не сте предоставили достатъчно информация, за да знаете със сигурност, но очаквам, че свързващото средство не е конфигурирано да знае за вашия формат на датата. Можете да опитате нещо подобно:

class MyClass {
@org.grails.databinding.BindingFormat("yyyy-MM-dd")
Date expiryDate
}

Можете също да конфигурирате това като формат за дата по подразбиране в Config.groovy:

// grails-app/conf/Config.groovy
grails.databinding.dateFormats = ["yyyy-MM-dd", "MMddyyyy", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd"T"hh:mm:ss"Z""]

виждам http://grails.org/doc/latest/guide/theWebLayer.html#dataBinding за повече информация.

Надявам се това да помогне.


0 за отговор № 2

Мисля, че тук има два проблема:

  1. Вашият JSON трябва да има стойност за датата в кавички (i.д. изтичане на датата: "2016-07-21"). Без кавички, тя вероятно свързва само началната цифрова част (2016), която не е една от конфигурираните формати.
  2. Изглежда има грешка на Grails (ние сме на 2.5.0) с обвързващи дати в класовете с вложени домейни (поради което аз съм тук). Ако го свържете правилно (което означава, че форматът на датата съвпада с формат, определен в grails.databinding.dateFormats), атрибутът на датата е фино , Въпреки това, ако има несъответствие (което означава, че стойността е "2016", но конфигът е "гггг-ММ-дд", лошата стойност се заличава без грешка при потвърждаване. Видях това поведение с вградените класове с вградени класове. и в отношенията належаща, и мисля, че затова вашето изтичане на датата остава нищожно.