1

我们有 JAXB 生成的方法 setCHECKDT(XMLGregorianCalendar value)。从实际的业务逻辑来看(我们不能修改业务逻辑)有时我们可能会得到CHECKDT为空值,同样需要分配给生成xml的方法。

将空日期设置为设置器时,从 xml 中消失。请建议一种将空值分配给 XMLGregorianCalendar 日期的方法或任何生成标记的方法。

4

1 回答 1

2

将 Java 属性设置为 null 将正确地导致元素在序列化时从 XML 中遗漏。如果您仍然想要 XML 中的元素,您的选择是:

  1. 编写您自己的日期/时间转换器,可以处理(反)序列化的空标签(请参阅http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html#wp155652)。

  2. 使用 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"/>
于 2012-08-07T08:51:26.223 回答