没有为响应类ArrayList找到消息正文编写器
当我试图返回List时,它的抛出没有消息体编写器已被发现用于响应类ArrayList。
我的代码如下:
@POST @Path("/{scope}/{application}/tables") @Produces("application/xml") public List getTableNames(@PathParam("scope") String scope, @PathParam("application") String application, Request request) { // For example, I am returning a list of String return new ArrayList(4); }
请帮帮我。 提前致谢
要返回一个列表,最好将其包装到一个注释为@XmlRootElement
的容器中,并将该列表作为一个字段给予该列表,注释为@XmlElement
。
像这样:
@XmlRootElement public class Container { @XmlElement public List yourlist; }
看到这个 ,它的JAXB给你带来了问题,它不知道如何解组/编组List。
我用JacksonJaxbJsonProvider解决了它。 不需要修改Java代码。 只需对Spring context.xml
和Maven pom.xml
一些更改,请参阅https://stackoverflow.com/a/30777172/1245231
为了避免包装,人们可以使用jackson。 关于如何做到这一点,你可以按照我的回答来找到类似的问题。
我已将List添加到域层的项目范围的现有对象中。
它对项目更具上下文性,并且开箱即用:不需要测试XmlRootElement,而是为该对象的现有测试用例列表添加测试数据+逻辑。
尝试使用GenericEntity。
Response.ok(new GenericEntity>(yourCollectionOfStrings) {}).build();
添加此Maven依赖项:
jaxrs.providers org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider