我的模型對象是這個樣子:如何使用JAXB生成帶有可選的xs:元素的XSD?
@XmlRootElement(name = "appConfig")
@XmlType(propOrder = {})
public class Config implements Serializable {
...
private int advancedFooBar;
...
@XmlElement(name = "advancedfoobar")
public int getAdvancedFooBar() {
return advancedFooBar;
}
public void setAdvancedFooBar(int advancedFooBar) {
this.advancedFooBar = advancedFooBar ;
}
當我產生對這一類的模式瓦特/ JXC我結束了對上述財產的下列內容:
<xs:element name="advancedfoobar" type="xs:int"/>
我想這是一個可選的元素,所以我試圖改變
@XmlElement(name = "advancedfoobar")
到
@XmlElement(name = "advancedfoobar", required=false)
但是,這並沒有對生成的模式產生任何改變。我需要做什麼以使「advancedfoobar」元素在生成的模式中被定義爲可選的?
我在Windows 7 Ultimate x64上使用JDK 1.7.0_U3。
謝謝。
-Noah
@Blaze:好吧,我想試試。我注意到,我似乎自動是可選的字符串類型,我想知道int是什麼特別。對我來說,模式gen不使用@XMLElement(必需)來判斷原語是很奇怪的。 – NBW
@NBW - 這似乎是一個錯誤。我已經用更多信息更新了我的答案。我領導EclipseLink JAXB(MOXy)實現,併爲此問題提出了一個錯誤。這在JAXB RI中似乎也存在問題,我建議你輸入一個針對該impl的錯誤:http://jaxb.java.net –
@NBW - 我用更好的解決方案更新了我的答案。 –