我有一個基於Spring MVC的REST服務。Spring MVC RequestMapping正在被轉發
這是我的代碼:
public class SitesController {
@RequestMapping(value="/rest/sites/{id}", method=RequestMethod.GET)
@ResponseBody
public SiteDTO getSite(@PathVariable String id) {
Integer siteId = Integer.parseInt(id);
Site site = cms.getSite(siteId);
SiteDTO siteResult = new SiteDTO(site);
return siteResult;
}
@RequestMapping(value="/rest/sites", method=RequestMethod.GET)
public SitesResult getSites(@RequestParam Integer companyId) {
Collection<Site> sites = cms.getSites(cms.getCompany(companyId));
SitesResult sitesResult = new SitesResult(sites);
return sitesResult;
}
}
(我跳過一些代碼,並不適用於這個問題)
當我去到URL /rest/sites/1
它返回的是我所期望的數據,但是當我去/rest/sites?companyId=1
時,我得到一個404頁面:HTTP Status 404 - /rest/rest/sites
。
的日誌中顯示,在getSites
函數的代碼運行,但在此之後的日誌中顯示以下內容:org.springframework.web.servlet.view.JstlView Forwarding to resource [rest/sites] in InternalResourceView 'rest/sites'
爲什麼重定向,而不是執行?
UPDATE
發現問題。因爲我的方法上面沒有@ResponseBody
,調度程序轉發了我的請求。更多信息here,事情的關鍵是If the method is annotated with @ResponseBody, the return type is written to the response HTTP body. The return value will be converted to the declared method argument type using HttpMessageConverters.
什麼樣的對象是'SitesResult'? – 2013-02-20 15:15:31