java - 将 null 分配给 XMLGregorianCalendar

标签 java jaxb jaxb2

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

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

最佳答案

将 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 将包含该元素,即使该元素为 null。该元素将标有属性 'nil="true"':

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

关于java - 将 null 分配给 XMLGregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840423/

相关文章:

java - Jax-b 在解码时解释过多

java - 使用 JAXB 在 xml 中生成属性选项

java - Hibernate sessionfactory 不识别标识符

Java 8 : Stream a list and map to another list based on different filters

java - 如果属性等于 xxx,JAXB 获取元素

java - @XmlJavaTypeAdapter 带继承

java - 无论如何只注释 JAXB 的必填字段

java - 将 JSON 响应解析为列表

java - 队列一旦消耗就不会被删除?

java - JAXB 2.1 为生成的类实现 Comparable<T>