我在这里创建了一张故障单,解释了我遇到的问题https://bugs.eclipse.org/bugs/show_bug.cgi?id=460541
基本上,如果我们有一个带有@XmlElements的@XmlElementWrapper,那么当解组XML元素为空时,永远不会调用JAXB对象上的setter来设置一个空集合。这适用于JAXB RI。
示例方法和注释定义:
@XmlElementWrapper(nillable=true)
@XmlElements(value = {@XmlElement(name="subelement", type=SubElement.class), @XmlElement(name="subsubelemenet", type=SubTypeOfSubElement.class)})
public List<SubElement> getSubElementCollectionWithSubType() {
return subElementCollectionWithSubType;
}
如果除了一起删除@XmlElements之外还有其他方法,我会很高兴听到任何解决方法。
答案 0 :(得分:0)
JAXB不在列表上使用setter,它通常调用get并附加到列表中,因此如果列表为null,则getter应创建一个列表。