没有为响应类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