我有一个webservice soap服务,它将带有可选列表的对象作为xml参数:
@XmlElement(required = false)
private List<String> list;
public List<String> getList() { return list; }
如果客户端没有提供list标签,是否可以告诉JAXB始终返回/使用空集合而不是null
列表?
或者我是否总是必须在服务器端定义一个懒惰的getter以获取永远不会为null的列表(我更喜欢这种情况)?
public List<String> getList() {
if (list == null) {
list = new ArrayList<String>();
}
return list;
}
答案 0 :(得分:10)
如果您希望XML中的集合缺少对应于Java对象中的空List
,则只需执行以下操作。
@XmlElement(required = false)
private List<String> list = new ArrayList<String>();
这将与该字段null
一样编组。使用null
注释时,List
和空@XmlElementWrapper
的编组方式只有差异。
答案 1 :(得分:2)
如果您希望存在空标记,请使用getter初始化,如您所示。
或
@XmlElement(required = false)
private List<String> list = new ArrayList<>();
这样标签就会出现。