2

我有一个 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;
}

然后我将 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;
}
4

1 回答 1

0

尝试添加:

@XmlSeeAlso({Child1.class, Child2.class})
abstract class Base {
}
于 2012-06-18T23:27:54.763 回答