我在应用程序服务器项目(不是 Spring Boot)中使用 RestTemplate 从端点获取实体。
实体 DTO(使用 JAXB 注释)是:
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "entity")
public class EntityDTO {
private Integer id; // this was missing
private List<String> parameterName; // parameter names
public EntityDTO() {
}
@XmlElementWrapper(name = "parameterNames")
@XmlElement(name = "parameterName")
public List<String> getParameterName() {
return parameterName;
}
public void setParameterName(List<String> parameterName) {
this.parameterName = parameterName;
}
@XmlElement(name = "id")
public Integer getId() {
return id;
}
// this was returning Integer instead of void
public void setId(Integer id) {
this.id = id;
}
}
因此,在端点中,例如以这种方式返回实体:
{
"entity": {
"id": 1,
"parameterNames": {
"parameterName": [
"param1",
"param2"
]
}
}
}
我正在使用带有以下代码的 RestTemplate 对上一个端点执行 GET:
...
HttpEntity<EntityDTOO> response = restTemplate.exchange(
uri,
HttpMethod.GET,
httpEntity,
EntityDTO.class);
...
但是 RestTemplate 以这种方式解组实体:
id: 1
parameterName: null
但我期待:
id: 1
parameterName: ["param1", "param2"]
任何人都知道如何使用 RestTemplate 识别 @XmlElementWrapper(name = "parameterNames") 注释?
提前致谢。