我看到了其他几个类似的问题,但它们并不完全符合要求。
我目前正在尝试从两个不同的控制器返回 JSON。在我的一个控制器中,它可以正常工作,但是当我到达第二个端点时,我收到 406 错误,我不知道出了什么问题。这是控制器动作:
@RequestMapping("/v1/companies/name/{companyName}")
public @ResponseBody ResultsList<CompanyResult> getCompaniesByName(@PathVariable("companyName") String companyName) {
if (StringUtils.isEmpty(companyName)) {
throw new HttpMessageNotReadableException("blah");
}
ResultsList<CompanyResult> results = companySearchService.getCompaniesByName(companyName);
return results;
}
这是我试图返回的模型:
public class ResultsList<T> {
@XmlElement(name = "results")
private ArrayList<T> results;
public int resultCount() {
return this.results.size();
}
public void addResult(T result) {
this.results.add(result);
}
public ResultsList() {
this.results = new ArrayList<T>();
}
}
从控制器代码中可以看出,我的 ResultsList 由 CompanyResult 对象组成:
public class CompanyResult implements ICompany {
@XmlElement(name = "companyName")
private String companyName;
@XmlElement(name = "symbol")
private String symbol;
@XmlElement(name = "city")
private String city;
@XmlElement(name = "state")
private String state;
......
所以我的控制器返回了一个@RequestBody ResultsList,它带有@XmlElement注解,并且列表中包含的对象也带有@XmlElement注解。这是我必须做的才能让其他场景正常工作。但是这个失败了。谁能告诉我为什么?