2013-06-18 60 views
1

我有一個列表,是一個超級型,即XmlElement註釋可以有多個類型?

List<IFoo> foo 

該列表包含來自兩個不同的亞型的對象:

public class FooBar implements IFoo{ 
} 

public class FooType implements IFoo{ 
} 

是否有辦法添加multple類型的XmlElement的註釋,即

XmlElement(type={FooBar.class, FooType.class) 
List<IFoo> foo 

回答

1

通過使用註釋XmlElements可以爲列表提供多種類型。

E.g.

@XmlElements({ 
    @XmlElement(type=FooBar.class), 
    @XmlElement(type=FooType.class) 
}) 
List<IFoo> foo; 
+0

謝謝,這工作。 – user86834

-1

集合屬性可以包含多種類型。有了這個用例,如果你想能夠往返文檔,你需要某種類型的指示器。

選項1 - @XmlElements

@XmlElements批註採用@XmlElement註釋的陣列。這樣做的目的是分配一個獨特的元素來識別每種類型。

選擇2 - @XmlElement(type=Object.class)

如果你告訴JAXB的類型是Object這將迫使每個值與xsi:type屬性唯一標識類型寫出來。由於值類型不會被自動發現,因此您需要通過以創建JAXBContext或使用@XmlSeeAlso註釋參考。

+0

謝謝布萊斯,我在最後使用了XmlElements註釋。我知道你對這方面很熟悉,所以我希望你不介意我問你另一個問題。我需要將我的java模型序列化爲HTML,最好的方法是什麼? – user86834

+0

@ user86834 - 類似於?: http://blog.bdoughan.com/2012/11/using-jaxb-with-xslt-to-produce-html.html –

+0

謝謝,有沒有辦法讓Spring與Spring一起工作MVC的內容談判機制? – user86834