java CXF返回元素列表
这很好:
@GET
@Path("elements")
public List<Element> getElements(@HeaderParam(SESSION_TOKEN) String token) {
try {
if (token != null) {
Session session = new Session();
if (session.initWithToken(token)) {
ElementFacade sf = ElementFacade.getInstance();
return sf.getElements(session.getUser());
}
}
} catch (Throwable th) {
log.error("", th);
}
return new ArrayList<Element>();
}
我得到了一个非常好的JSON数组和对象
现在的问题是,我喜欢将数据作为有效负载放入响应中,以便能够设置标题和状态,或者将错误对象作为有效负载返回。 但它不起作用
@GET
@Path("elements2")
public Response getElements2(@HeaderParam(SESSION_TOKEN) String token) {
try {
if (token == null) {
return ResponseFactory.createResponse(401, 4007);
}
Session session = new Session();
if (session.initWithToken(token)) {
ElementFacade sf = ElementFacade.getInstance();
return Response.status(200)
.header(Endpoint.SESSION_TOKEN, session.getToken())
.entity(sf.getElements(session.getUser())).build();
}
return ResponseFactory.createResponse(403, 4006);
} catch (InvalidTokenException e) {
return ResponseFactory.createResponse(401, 4005);
} catch (SessionTimeoutException e) {
return ResponseFactory.createResponse(401, 4004);
} catch (Throwable th) {
log.error("", th);
return ResponseFactory.createResponse(500, 5099);
}
}
2012年5月16日下午7:00:35组织。阿帕奇。cxf。jaxrs。拦截器。JAXRoutInterceptor writeResponseErrorMessage 警告:未找到响应类ArrayList的消息正文编写器
如何使用与第二个函数中的第一个函数相同的现有功能
我读过一些关于编写自己的MessageBodyWriter的文章,但是在这个类中,我需要将整个JSON写入一个OutputStream,这似乎是一个很大的工作量和开销
提前谢谢
# 1 楼答案
这太容易了。但是在任何文档中都没有找到它
我试了很多,然后
就这样。。。您只需要创建一个GenericEntity