![](/img/trans.png)
[英]MessageBodyWriter not found for media type=application/json
[英]MessageBodyWriter not found for media type=application/json for DTO with @xmlrootelement
我試圖了解在什么情況下(如果可能)會發生這種類型的異常:
找不到具有@xmlrootelement的DTO的媒體類型= application / json的MessageBodyWriter
是的,我的Maven依賴關系是正確的,我什至有兩個類似的DTO都可以正常工作,讓Jersey
處理內容協商/編組工作...
由於某種原因,我得到了前面提到的帶有以下內容的異常:
資源方式:
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@WebinarSecurityFilter
public Response getXYZ( @QueryParam("startDate") LocalDate start,
@QueryParam("endDate") LocalDate end,
@QueryParam("excludesubaccounts") String excludeSubAcc){
LocalDate now = LocalDate.now();
LocalDate startDate = start == null ? now.minusDays(30) : start;
LocalDate endDate = end == null ? now : end;
boolean excludeSubAccounts = excludeSubAcc != null && "Y".equalsIgnoreCase(excludeSubAcc);
List<ABC> resultQuery = abcService.getABCs(clientId, startDate, endDate, excludeSubAccounts);
CLA cla= new CLA();
cla.setId(clientId);
cla.setA(resultQuery);
cla.setB(resultQuery.size());
return Response.ok(cla).build();
}
DTO / DTO容器:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CLA{
private long id;
private long a;
private long b;
@XmlElement(name = "abc")
private List<ABC> ABCs;
//setters & getters
}
DTO:
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class ABC{
// a lot of fields
//setters & getters
}
我已經在其他DTO中使用了相同的精確場景,那么為什么這個不起作用?
我的問題是,在某些情況下,澤西島/傑克遜無法完成這項任務,而必須手動執行此任務,還是我錯過了某些東西而只是失明?
這是例外:
找不到針對媒體type = application / json,type = class com.CLA,genericType = class com.CLA的MessageBodyWriter
它並不是有時會起作用,有時卻不起作用,即使我還有另外兩種執行相同功能但使用不同DTO的資源方法,對於該資源方法也只是不起作用
錯誤發生時,您能給出更具體的情況嗎? 既然我只看到您聲明@Produces
批注,但是沒有@Consumes
批注,我認為在發送請求時會發生此錯誤? 如果是這種情況,只需將其添加到您的desire方法上,或將其放在類名上方即可:
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
但是,如果不是這種情況,則可能是因為您需要在json中指定要發送請求和接收響應,因此請在請求標頭中添加以下內容:
Content-Type: application/json
Accept: application/json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.