0
我有一個模式,它定義了一個具有可選布爾屬性的類型。我想補充的一個類型,增加了用於設置屬性的默認值設置爲「true」,然而,當我們使用JAXB生成的Java類該類ReallyBob已申請在JAXB生成的Java類中應用默認值限制
<xsd:complexType name="bob">
<xsd:attribute name="isBob" type="xsd:boolean" use="optional" />
</xsd:complexType>
<xsd:complexType name="reallyBob">
<xsd:complexContent>
<xsd:restriction base="sa:bob">
<xsd:attribute name="isBob" type="xsd:boolean" default="true" use="optional" />
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
沒有限制的限制。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "reallyBob")
public class ReallyBob
extends Bob
{
}
有沒有辦法讓我生成的類ReallyBob設置isBob屬性的默認值?
編組期間我所看到的關於不被JAXB,即here和here答覆表明開啓模式驗證應用的限制類似的問題...我不知道如何將適用於這種情況下,它的默認值,而比價值限制。
也許還有另外一種方法來解決這個問題嗎?
感謝科斯蒂,我們不能使用「,在類「回調,因爲類會生成,任何代碼chages在下次生成時都會被丟棄。但是,我們可以使用Unmarshaller.Listener實例來設置我們的限制(使用默認值)元素的默認值。這將工作。然而,這意味着我們需要複製架構和Unmarshalling監聽器中定義的默認值集合,以及發生錯誤的所有可能性......但我還沒有找到任何更好的方法來實現這一點。 –
啊,我的道歉,我沒有意識到。是的,你的解決方案和我的解決方案一樣,只是在不同的地方!我有一個最後的建議是,有時候JAXB註釋並不是明確需要的,你是否檢查過默認值是沒有設置的? – kirsty