2016-05-19 5 views
2

Grails 3.1.xでjava.time APIを使用しようとしました。Grails 3のjava.time(jsr310)オブジェクトの書式設定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 
    }, 

ですが、私が本当にしたいことは、私も答えを複数回検索した後、私はできません、しかし、Grailsのドキュメントで解決策を見つけることを試みた

"date": "2016-05-19" 

ですそれを理解しているようだ。私はjava.util.Dateの書式設定に関するドキュメントを見つけましたが、これは私が望むものではありません。

「問題」はGETリクエストではあまりありませんが、POSTリクエストとPUTリクエストでは実用的ではないため、yyyy-MM-ddという短いフォーマットを取得する必要があります。

誰にでも解決策が見つかりましたか?

答えて

0

Grails Slack質問チャンネルから回答がありました。今は簡単にはできません。これを達成するにはデータバインディングとjsonレンダリングの両方をカスタマイズする必要があり、最終的に私はあきらめました