簡體   English   中英

找不到具有@xmlrootelement的DTO的媒體類型= application / json的MessageBodyWriter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM