2013-07-05 39 views
1

我想要做一些應該比較簡單的事情,將一個子類添加到僅包含字符串的根元素中。然而在客戶端,這個對象映射了JAXBElement而不是Strings。見下:JAX-B映射字符串到JAXBElement <String>

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; 
} 

我敢肯定這是踢死馬,但我沒有看到任何地方這種行爲的明確解釋。

回答

1

如果相應元素爲nillalbe="true"minOccurs-"0",則JAXB實現將生成JAXBElement類型的屬性。這是爲了它可以往返兩種狀態。

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

您可以通過指定@XmlElementrequired標誌使得元素。

@XmlElement(nillable = true, required=true) 
protected String barName;