如何 return 一个数组列表作为对 restful cxf 网络服务调用的响应

How to return an arraylist as response to the restful cxf webservice call

我正在尝试使用 restful cxf 网络服务调用从 MongoDB 检索文档列表。但是我面对

No message body writer has been found for response in Class ArrayList.

我关注了 this tutorial。他们在这里 returning 员工对象作为 CxfRestServiceImpl class 中的响应。所以他们使用了 @XMLElement(name = 'employee').

但现在我正在尝试 return 来自 MongoDB 的文档列表作为 CxfRestServiceImpl class 中的响应。我需要做哪些更改才能克服此错误?

如果我理解你是正确的,你的代码中有这个异常。比起,您最好将 List 答案包装在其他 class.

@XmlRootElement(name="DocumentList")
public class DocumentList {
    @XmlElement
    public List<Document> documentList;
}

您可以 return 您服务中的对象列表。 JAXB 将从 ArrayList

进行转换
@GET
@Path("/employees")
public List<Employee> getEmployees()

确保对象具有 JAXB XmlRootElement 注释。

@XmlRootElement(name="Employee")
public class Employee{
}

你可以像这样"wrap"进入数组

return Response.status(Response.Status.OK).entity(yourList.toArray(new YourObject[yourList.size()])).build();

其中 yourList 是 List<yourObject>ArrayList<yourObject>