我正在尝试做一些应该相对简单的事情,在我只包含字符串的根元素中添加一个子类。但是在客户端,此对象具有JAXBElement映射而不是字符串。见下文:
public class Foo {
protected Bar barObject;
}
public class Bar {
@XmlElement(nillable = true)
protected String barName;
}
生成的Bar bean看起来像这样。
public class Bar {
@XmlElementRef(name = "barName", type = JAXBElement.class, required = false)
protected JAXBElement<String> barString;
}
我确信这是一匹死马,但我没有在任何地方看到这种行为的明确解释。
答案 0 :(得分:1)
如果相应的元素是JAXBElement
和nillalbe="true"
,则JAXB实现将生成类型为minOccurs-"0"
的属性。这样它可以使两个州都往返。
<element name="barName" type="string" nillable="true" minOccurs="0"/>
您可以通过在minOccurs="1"
上指定required
标记来制作元素@XmlElement
。
@XmlElement(nillable = true, required=true)
protected String barName;