由于日期值,Grails LazyMap 到 POJO 的转换失败
Posted
技术标签:
【中文标题】由于日期值,Grails LazyMap 到 POJO 的转换失败【英文标题】:Grails LazyMap to POJO Conversion failed due to Date value 【发布时间】:2016-09-14 19:35:45 【问题描述】:我正在使用 Grails 2.4 和 jersey request builder 插件。
我遇到以下错误
def resRequestList = RESPONSE FROM REST REQUEST
ResourceTest item1 = resRequestList.get(0)
错误是
Cannot cast object 'createdBy=2576, endDate=10-Jun-2016, id=14'
with class 'groovy.json.internal.LazyMap' to class 'com.modal.resource.ResourceTest'
due to: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '10-Jun-2016' with class 'java.lang.String' to class 'java.util.Date'
从 Sting 到 Date 的转换似乎失败。
我需要解决方案将其自动映射到 POJO,而不会出现字符串到日期对话错误。
应该有任何东西在铸造之前进行预处理。
请帮忙。
【问题讨论】:
你可能想检查一下:notetodogself.blogspot.sg/2010/12/… 【参考方案1】:您可以在ResourceTest
类的日期字段中添加@BindingFormat('dd-MMM-yyyy')
注释。您还可以使用grails.databinding.dateFormats
配置选项来设置默认的全局绑定格式。有关详细信息,请参阅此答案:Binding a Grails date from params in a controller。
我还建议不要将月份发送为 Jun
,因为这是特定于区域设置的,并且可能无法根据您的环境工作。
【讨论】:
嗨,卓戈。感谢您的回复,我的 ResourceTest 类是 POJO 而不是 POGO。如何在 POJO 类中添加 @BindingFormat('dd-MMM-yyyy')。【参考方案2】:最后我找到了最适合我的替代解决方案。
我使用反射来获取原始对象列表,使用 GenericType。
我的代码如下
def resRequestList = clientResponse.getEntity(new GenericType<ArrayList<ResourceTest>>());
【讨论】:
以上是关于由于日期值,Grails LazyMap 到 POJO 的转换失败的主要内容,如果未能解决你的问题,请参考以下文章