簡體   English   中英

Spring MVC Jaxb2Marshaller無法正確處理繼承類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM