簡體   English   中英

使用泛型時,RestClient不會返回確切的未編組對象

[英]RestClient is not returning exact unmarshalled object when Generics are used

我正在進行RESTful WS調用,如下所示:

ResponseEntity<ResponseHolder> responseEntity =
                restTemplate.exchange(url, HttpMethod.GET, requestEntity, ResponseHolder.class, 300788);

但是,返回時,我檢查responseEntity內的值,它是ElementNsImpl對象而不是我嵌入到ResponseHolder中的Employee對象。 因此,條件(responseEntity.getBody().getResponse() instanceof Employee)被評估為false!


下面是我的服務器端控制器方法:

@RequestMapping(value = "/{empId}", method = RequestMethod.GET)
    public @ResponseBody ResponseHolder getEmployee(@PathVariable int empId) {
        System.out.println("Returning employee details for empId = " + empId);
        Employee employee = new Employee(123, "Akshay", "A", "Technology", 500000);

        ResponseHolder<Employee> responseHolder = new ResponseHolder<Employee>(employee, null);

        return responseHolder;
    }

下面是我的ResponseHolder.java類中的代碼:

import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;

@XmlRootElement(name = "response")
@XmlSeeAlso(Employee.class)
public class ResponseHolder<T> {

    private T response;
    private ErrorStatus errorStatus;

    public ResponseHolder() {
    }

    public ResponseHolder(T response, ErrorStatus errorStatus) {
        this.response = response;
        this.errorStatus = errorStatus;
    }

    public T getResponse() {
        return response;
    }

    @XmlAnyElement
    public void setResponse(T response) {
        this.response = response;
    }

    public ErrorStatus getErrorStatus() {
        return errorStatus;
    }

    @XmlElement
    public void setErrorStatus(ErrorStatus errorStatus) {
        this.errorStatus = errorStatus;
    }
}

我到底在做什么錯?

謝謝。

您的答復不是Employee,而是您的Employee的序列化(字符串)。 您必須在客戶端重新編碼數據,然后填充一個employee對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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