2016-05-19 6 views
2

Пытается использовать API java.time в контроллерах отдыха Grails 3.1.x.Форматирование объектов java.time (jsr310) в Grails 3 JSON/rest-api

Мой объект домен "Отсутствие" имеет поле

LocalDate date 

build.gradle содержит

compile "org.jadira.usertype:usertype.extended:5.0.0.GA" 

как зависимость

и application.groovy содержит

grails.gorm.default.mapping = { 
'user-type'(type: org.jadira.usertype.dateandtime.threeten.PersistentLocalDate, class: LocalDate) 
'user-type'(type: org.jadira.usertype.dateandtime.threeten.PersistentLocalDateTime, class: LocalDateTime) 

}

Это работает для сохранения объекта домена, поэтому сторона бэкэнда/db, похоже, работает должным образом.

Однако при сериализации объекта домена через RestController я не могу правильно форматировать способ, которым я хочу (т. Е. Yyyy-MM-dd). Выход

"date": { 
     "chronology": { 
      "calendarType": "iso8601", 
      "class": "java.time.chrono.IsoChronology", 
      "id": "ISO" 
     }, 
     "class": "java.time.LocalDate", 
     "dayOfMonth": 19, 
     "dayOfWeek": { 
      "enumType": "java.time.DayOfWeek", 
      "name": "THURSDAY" 
     }, 
     "dayOfYear": 140, 
     "era": { 
      "enumType": "java.time.chrono.IsoEra", 
      "name": "CE" 
     }, 
     "leapYear": true, 
     "month": { 
      "enumType": "java.time.Month", 
      "name": "MAY" 
     }, 
     "monthValue": 5, 
     "year": 2016 
    }, 

но то, что я действительно хочу

"date": "2016-05-19" 

Я пытался найти решение в документации Grails, однако, даже после поиска ответа несколько раз я не могу похоже, это выясняет. Я нашел документацию по форматированию java.util.Date, однако это не то, что я хочу.

«Проблема» не очень важна с запросом GET, но для запросов POST и PUT это непрактично, поэтому мне нужно получить короткоформатный yyyy-MM-dd.

Кто-нибудь нашел решение этой проблемы?

ответ

0

Получил ответ от канала запроса Grails Slack. В настоящее время это нелегко. Вам нужно настроить как привязку данных, так и json-рендеринг, чтобы выполнить это, и в конечном итоге я отказался от