2012-08-07 45 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"/>