1

我正在尝试做一些应该相对简单的事情,向我的根元素添加一个只包含字符串的子类。然而在客户端,这个对象映射了 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;
}

我确定这是在踢死马,但我在任何地方都没有看到对这种行为的明确解释。

4

1 回答 1

1

JAXBElement如果对应的元素是nillalbe="true"and ,则JAXB 实现将生成类型属性minOccurs-"0"。这样它就可以往返两个州。

<element name="barName" type="string" nillable="true" minOccurs="0"/>

minOccurs="1"您可以通过在 上指定required标志来制作元素@XmlElement

@XmlElement(nillable = true, required=true)
protected String barName;
于 2013-07-05T16:31:47.483 回答