Я видел пару других вопросов такого рода, но они не вполне соответствовали требованиям.
В настоящее время я пытаюсь вернуть 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. Это то, что я должен был сделать, чтобы другой сценарий работал. Но этот провал. Кто-нибудь может сказать мне, почему?