为XMLGregorianCalendar分配null

时间:2012-08-07 06:28:37

标签: java jaxb jaxb2

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

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

1 个答案:

答案 0 :(得分:1)

将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;
    
  3. 现在序列化的XML将包含该元素,即使它是null。该元素将使用属性'nil =“true”'标记:

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