尝试在Grails 3.1.x rest Controller 中使用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正常工作。

有没有人找到解决方案?

最佳答案

从Grails Slack问题 channel 获得了答案。目前尚不容易做到。您需要自定义数据绑定(bind)和json渲染以完成此操作,最终我放弃了

关于json - 在Grails 3 JSON/rest-api中格式化java.time(jsr310)对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37326495/

10-16 21:41