我有一个很常见的问题,很难找到解决方案,所以我决定问自己一个问题。
我有3个项目-服务器/客户端/域。
我在接收客户端中的通用类型列表时遇到了困难,因此它无法映射到我的域对象(即使它们在客户端和服务器上完全相同)。
在服务器中,我有:
@RequestMapping(value = "/people", method = RequestMethod.GET)
public List<Person> getAllPeople() {
return PersonService.getAllPeople();
}
通过评估表达式的返回值正是我想要的-Person对象列表:
在邮递员中:
现在在客户端中,我有一个类接收器,我正在尝试为每个请求建立基础:
public class RequestManager<DOMAIN> {
private String url;
private RestTemplate restTemplate;
private ParameterizedTypeReference reference;
public RequestManager(String url) {
restTemplate = new RestTemplate();
reference = new ParameterizedTypeReference<DOMAIN>() {};
this.url = url;
}
public DOMAIN get() {
return (DOMAIN) restTemplate.exchange(url, HttpMethod.GET, null, reference).getBody();
}
}
我在客户端中调用RequestManager的方式:
List<Person> people = new RequestManager<List<Person>>(url).get();
对这个表达式求值可以得到LinkedHashMap的ArrayList,我想要对象Person的ArraList。
我用于服务器和客户端的域对象(在域项目中):
public class Person {
private String name;
private String code;
public Person() {
}
public String getName() {
return name;
}
public Person setName(String name) {
this.name = name;
return this;
}
public String getCode() {
return code;
}
public Person setCode(String code) {
this.code = code;
return this;
}
如何正确处理这种情况?