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