我看到了其他一些這種性質的問題,但他們不太適合這個法案。嘗試從端點檢索JSON時出現了406錯誤
我目前正試圖從兩個不同的控制器返回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註解。這是我必須做的,以使其他場景正常工作。但是這個失敗了。誰能告訴我爲什麼?
謝謝您的回覆,但我對您的回覆感到困惑。我的GET請求(使用jQuery.get())要求提供JSON。我認爲我的控制器也會返回JSON。您的評論意味着我的控制器正在返回xml。我的其他控制器正在返回JSON而未被明確告知這麼做,所以我不知道爲什麼這個控制器會有任何不同。 – Samo 2010-11-17 20:57:26
您是否試過要求XML並查看響應代碼是否更改? – 2010-11-17 21:00:55
另外,你可以發佈你的Spring配置文件嗎? – 2010-11-17 21:12:14