为什么 MappingJackson2XmlView 不允许转换包含多个对象的模型?
请参阅 MappingJackson2XmlView.class 第 90 行:
throw new IllegalStateException("Model contains more than one object to render, only one is supported");
问问题
575 次
1 回答
1
这是因为没有将列表转换为 XML 的默认方法:文档必须只有一个根元素。虽然在 JSON 中返回的未命名列表是有效的,但在 XML 中就不行了。您需要指定一个中间类来保存列表。如果你使用 aMarshallingView
和 a Jaxb2Marshaller
,你可以这样做并且仍然提供原始 JSON 列表:
<property name="defaultViews">
<list>
<!-- JSON -->
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
<!-- XML -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan" value="example.model" />
</bean>
</constructor-arg>
</bean>
</list>
</property>
在这里,example.model.FooCollection
将只包含一个列表example.model.Foo
,并定义它自己的@XmlRootElement
.
于 2016-05-23T05:46:08.450 回答