【问题标题】:JAXB mapping null-lists to empty collections?JAXB 将空列表映射到空集合?
【发布时间】:2014-10-18 10:50:32
【问题描述】:

我有一个 webservice soap 服务,它接受一个带有可选列表的对象作为 xml 参数:

@XmlElement(required = false)
private List<String> list;

public List<String> getList() { return list; }

如果客户端未提供列表标记,是否可以告诉 JAXB 始终返回/使用空集合而不是 null 列表?

或者我是否总是必须在服务器端为永远不应该为空的列表定义一个惰性 getter(我希望总是这样)?

public List<String> getList() {
    if (list == null) {
        list = new ArrayList<String>();
    }
    return list;
}

【问题讨论】:

    标签: java web-services soap jaxb jax-ws


    【解决方案1】:

    如果您希望 XML 中缺少的集合对应于 Java 对象中的空 List,您只需执行以下操作。

    @XmlElement(required = false)
    private List<String> list = new ArrayList<String>();
    

    这将与字段为null 一样编组。使用 @XmlElementWrapper 注释时,null 和空 List 的编组方式只有区别。

    【讨论】:

      【解决方案2】:

      如果您希望出现空标签,则可以使用 getter 进行初始化,如您所见。

      @XmlElement(required = false)
      private List<String> list = new ArrayList<>();
      

      这样标签就会出现。

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-27
        • 2016-03-02
        • 2011-10-15
        • 1970-01-01
        相关资源
        最近更新 更多