java-如何让CXF了解Map>?
作者:互联网
我的宁静方法返回Map< String,List< MyBean>>.但是我不知道如何获取CXF和JAXB来将其序列化为XML.
我希望它看起来像这样(尽管只要它在两侧都能起作用,我都不会为它的序列化而烦恼);
<response>
<items key="a">
<item>
....
</item>
<item>
....
</item>
</items>
<items key="b">
<item>
....
</item>
</items>
</response>
如果我只返回地图,我会得到;
[org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor]
No message body writer has been found
for response class HashMap.
如果尝试使用包装对象,则会得到;
[org.apache.cxf.jaxrs.provider.AbstractJAXBProvider]
java.util.List is an interface, and
JAXB can’t handle interfaces.
有什么建议么?这仅仅是CXF问题(我正在使用2.3.2版)吗?我确定我在泽西岛也有过类似的工作.
解决方法:
没有什么比离开屏幕更清晰的时间了.我在午餐时就发现了这一点,答案是根本不使用地图,而是使用列表包装器列表.
@XmlRootElement
public class MyResponse {
private List<ItemListWrapper> items;
//getters and setters
}
@XmlType
public class ItemListWrapper {
private String key;
private List<Item> items;
@XmlAttribute
public String getKey() {
return this.key;
}
//rest of the getters and setters
}
@XmlType
public class Item {
//just a bean
}
标签:jax-rs,jaxb,cxf,java 来源: https://codeday.me/bug/20191102/1992523.html