Grails 3.1.x レスト コントローラーで java.time API を使用しようとしています。
私のドメイン オブジェクト「Absence」にはフィールドがあります
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)
}
これはドメイン オブジェクトを永続化するために機能するため、バックエンド/データベース側は期待どおりに機能するようです。
ただし、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を機能させる必要があります。
誰かがこれに対する解決策を見つけましたか?