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