我们有 JAXB 生成的方法 setCHECKDT(XMLGregorianCalendar value)。 从实际的业务逻辑(我们不能修改业务逻辑)来看,有时我们可能会得到CHECKDT为空值,同样需要分配给生成xml的方法。
向 setter 设置 null 日期时,该日期会从 xml 中消失。请建议一种将 null 值分配给 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 将包含该元素,即使该元素为 null。该元素将标有属性 'nil="true"':
<yourProperty xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
关于java - 将 null 分配给 XMLGregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840423/