2

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を機能させる必要があります。

誰かがこれに対する解決策を見つけましたか?

4

1 に答える 1