这工作正常:
@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);
}
}
Mai 16, 2012 7:00:35 PM org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage 警告:没有找到响应类 ArrayList 的消息正文编写器。
如何使用与第二个函数中的第一个函数相同的现有功能?
我读了一些关于编写自己的 MessageBodyWriter 的内容,但是在那个类中,我需要将整个 JSON 写入 OutputStream 并且似乎需要大量工作和开销......
提前致谢