gpt4 book ai didi

java - 使用泛型时,RestClient 不会返回精确的未编码对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:32 26 4
gpt4 key购买 nike

我正在进行 RESTful WS 调用,如下所示:

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

但是,当返回时,我检查responseEntity内的值,它是ElementNsImpl对象,而不是我嵌入到ResponseHolder中的Employee对象。因此,条件 (responseEntity.getBody().getResponse() instanceof Employee) 的计算结果为 false!

<小时/>

下面是我的服务器端 Controller 方法:

@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 的序列化(字符串)。您必须在客户端重新组合数据,然后填充员工对象。

关于java - 使用泛型时,RestClient 不会返回精确的未编码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com