2
我有一個Spring MVC控制器來生成XML,它會生成沒有任何問題的常規對象。但是,看起來它不能正確支持多態。我想這可能是配置問題。Spring MVC Jaxb2Marshaller沒有正確處理繼承類
這是我的班級層次結構。
abstract class Base {
String attr1;
}
class Child1 {
String attrChild1;
}
class Child2 {
String attrChild2;
}
@XmlRootElement
class MyList {
@XmlElement (name="list")
List<Base> lists;
}
然後,我將1個Child1實例和1個Child2實例添加到列表中。
如果我手動使用JAXB馬歇爾,它會產生一些這樣的XML
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="child1">
<attr1>...</attr1>
<attrChild1>...</attrChild1>
</list>
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="child2">
<attr1>...</attr1>
<attrChild2>...</attrChild2>
</list>
但是,如果我去到春季,我只會變得
<list>
<attr1>...</attr1>
</list>
<list>
<attr1>...</attr1>
</list>
有什麼建議?
這裏是我的控制器類
@RequestMapping(value="/rest/test", method=RequestMethod.GET, produces="application/xml")
public @ResponseBody MyList getMyList() {
MyList myList = ....;
// add instance of Child1/2
return myList;
}