我正在使用球衣2.0創建REST服務。我伸出WebApplicationException球衣2.0 jaxrs RI - 返回json字符串異常
方法提高特定的異常
if(json.equals("") || json.equals(" ")) {
throw new ArgumentException("bad post data");
}
public class ArgumentException extends RestException {
.....
public ArgumentException(String message) {
super(Status.BAD_REQUEST,message);
}
}
public class RestException extends WebApplicationException {
...........
public RestException(Status status, String message) {
super(Response.status(status)
.entity(message)
.type("text/plain")
.build());
/*
super(Response.status(status)
.entity(new ErrorBean(status.getStatusCode(),message))
.type(MediaType.APPLICATION_JSON)
.build()); */
}
ErrorBean is a POJO
返回誤差內RestException純字符串作品(右HTTP代碼400和消息)的方法。但是,當我嘗試傳遞ErrorBean POJO並使用MediaType.APPLICATION_JSON作爲響應時,我得到一個錯誤,指出「Headers has already sent」,http錯誤代碼爲500(所以有一些內部管道問題)和空響應。
我也看了一下這個問題Returning JSON or XML for Exceptions in Jersey
我怎樣才能返回與代碼和消息異常像
一個JSON {「代碼」:400,「消息」:....}
更新
我收到的SO以及球衣用戶郵件列表的答案。步驟
- 非AJXB POJO不需要任何註釋
- 註冊JacksonFeature在你的應用
ResourceConfig RC =新ResourceConfig()。包( 「測試」)。註冊(JacksonFeature。類);
謝謝。這是缺少的。我爲其他人的利益添加了一個完整的例子。 – rjha94