Jaxb2Marshaller在2013年失败的java Spring MVC
我有一个SpringMVC项目,它通过PUT方法接受XML输入。XML中的一个元素是dateTime
。我使用Jaxb2Marshaller
将XML解组为bean。我有一个针对服务器上运行的webapp的单元测试
当我使用new GregorianCalendar(2012, 01, 02)
发送时间戳时,一切正常,我的应用程序接收对象
但是,如果我将测试更新为使用new GregorianCalendar(2013, 01, 02)
,则对象中的字段将返回为null
请注意,唯一的区别是年份,2012年与2013年。我在应用程序日志、localhost或catalina中没有看到任何错误消息。出去
想法
编辑:其他信息
我正在使用DataTypeConverter
将dateTime
转换为Calendar
。因此,我的模式有以下内容(我使用XJC将模式转换为Java类)
<annotation><appinfo><jaxb:globalBinding>
<jaxb:javaType name="java.util.Calendar" xmlType="dateTime"
parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
printMethod="javax.xml.bind.DatatypeConverter.pringDate"/>
</jaxb:globalBinding></appinfo></annotation>
# 1 楼答案
因此,我去掉了到
Calendar
的映射,并允许XJC使用XMLGregorianCalendar
生成Java类。这似乎解决了问题。看起来还是很奇怪,所以我很愿意去了解