2013-06-18 53 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