我们有 JAXB 生成的方法 setCHECKDT(XMLGregorianCalendar value)。从实际的业务逻辑来看(我们不能修改业务逻辑)有时我们可能会得到CHECKDT为空值,同样需要分配给生成xml的方法。
将空日期设置为设置器时,从 xml 中消失。请建议一种将空值分配给 XMLGregorianCalendar 日期的方法或任何生成标记的方法。
将 Java 属性设置为 null 将正确地导致元素在序列化时从 XML 中遗漏。如果您仍然想要 XML 中的元素,您的选择是:
编写您自己的日期/时间转换器,可以处理(反)序列化的空标签(请参阅http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html#wp155652)。
使用 nillable 注释 Java 属性,如下所示:
@XmlElement(required = true, nillable = true)
private XMLGregorianCalendar yourProperty;
现在序列化的 XML 将包含该元素,即使它为空。该元素将被标记为属性 'nil="true"':
<yourProperty xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>