我们有JAXB生成的方法setCHECKDT(XMLGregorianCalendar值)。 从实际的业务逻辑(我们不能修改业务逻辑),我们可能会多次将CHECKDT作为空值,同样需要分配给生成xml的方法。
将空日期设置为setter时,从xml中消失。请建议一种方法,将空值分配给XMLGregorianCalendar日期或任何生成标记的方式。
答案 0 :(得分:1)
将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"/>