尝试在 Grails 3.1.x 休息 Controller 中使用 java.time 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) 

}

这适用于持久化域对象,因此它的后端/数据库端似乎可以按预期工作。

但是,当通过 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渲染来完成这个,最终我放弃了


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!