2012-08-07 44 views
1

我们有JAXB生成的方法setCHECKDT(XMLGregorianCalendar value)。 从实际业务逻辑(我们无法修改业务逻辑),我们可能会将CHECKDT作为空值进行一些更改,同样需要将其分配给生成xml的方法。将null分配给XMLGregorianCalendar

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

回答

1

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

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

  2. 注释Java属性与的nillable如下:

    @XmlElement(required = true, nillable = true) 
    private XMLGregorianCalendar yourProperty; 
    

现在序列化的XML将包含元素,即使它是空的。该元素将被标记为属性'nil =“true”':

<yourProperty xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>