我通过 Web 服务传递一些对象,其中一些包含 java.sql.Date。因为 Date 没有空的构造函数,所以它不想被序列化。
问题的第一部分很简单:在客户和服务之间传递日期的最佳方式是什么?
第二部分有点棘手:一旦我决定如何传递日期,我显然可以声明日期瞬态并创建一些包装类以字符串或其他形式传递日期,但是如何尽可能透明地将相同的解决方案应用于包含日期的多个类?
(我有一种预感,DynamicProxy 可能是一个解决方案,但是阅读 Sun 网站上的文档并不是很有帮助,所以如果它确实是朝着这个方向发展的,那么我们将不胜感激)
编辑:我问了错误的问题,抱歉(我和同事之间存在一些误解,实际上是什么问题)。由于反序列化而出现问题。因此,一旦我有了 xml 格式的日期,它就会尝试将自身反序列化为 GregorianCalendar。问题的其他部分仍然存在:接收某些内容(长时间戳或 GregorianCalendar)并将其转换为 sql 日期的最佳方式是什么,而不需要为 10 个不同的类制作 10 个不同的包装器。我使用 NetBeans 来生成代码和 wsdl。
乔达时间
Date 类有一个笨重的 API。更好的实现是乔达时间 http://www.joda.org/joda-time/.
ISO 8601
Joda-Time 还允许您将日期转换为ISO 8601 https://en.wikipedia.org/wiki/ISO_8601标准格式(yyyy-mm-ddTHH:MM:SS.SSS)。将日期从服务器移动到客户端时使用此标准具有以可读格式包含完整日期的优点。当你使用例如JAXB http://docs.oracle.com/javase/tutorial/jaxb/intro/,日期的 XML 表示也是这个 ISO 标准。 (请参阅 XMLGregorianCalendar 类)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)