[英]Spring MVC Jaxb2Marshaller does not handle inheritance class properly
我有一個Spring MVC控制器來生成XML,它可以正常生成對象。 但是,它似乎不正確地支持多態。 我想這可能是配置問題。
這是我的班級層次結構。
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;
}
嘗試添加:
@XmlSeeAlso({Child1.class, Child2.class})
abstract class Base {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.