在升級我的應用程序使用可用的最新版本Spring來我(3.1.1),我發現我的REST調用之一拋出404錯誤(當它使用的是完美的成功的)。我已經驗證切換回舊庫(3.0.3)的工作,並返回到新的失敗,都不改變我的代碼。Spring版本變化導致REST風格的功能,打破
@Controller
@RequestMapping("/group/{groupId}/template")
public class TemplateController extends AbstractController {
...
@RequestMapping(value="/{templateId}", method=RequestMethod.GET) @ResponseBody
public Template getTemplate(ServletWebRequest request,
@PathVariable("groupId") int groupId,
@PathVariable("templateId") int templateId) throws Exception {
...
}
...
@RequestMapping(value="/{templateId}", method=RequestMethod.DELETE) @ResponseBody
public Task getTemplate(ServletWebRequest request,
@PathVariable("groupId") int groupId,
@PathVariable("templateId") int templateId) throws Exception {
...
}
...
}
我把GET方法扔在那裏只是爲了比較,它的工作原理。然而,當我做了DELETE方法(同樣,其用於工作)的要求,我得到一個錯誤,回到日誌中指出:
WARNING: No mapping found for HTTP request with URI [/*appname*/group/1/template/group/1/template/1] in DispatcherServlet with name '*appname*'
現在,誤差顯然是正確的,我沒有任何具有該映射的URI,但它爲什麼試圖找到該映射而不是指定的映射(/*appname*/group/1/template/1
)?
我不能在所有複製這種行爲與Spring MVC 3.1.1(用GET和DELETE電話),您可以請檢查,如果客戶端不發送不同的東西? – 2012-08-16 23:42:39
@Biju Kunjummen我正在使用Linux的curl發送這些調用,因此客戶端問題不應該成爲問題。另外,我還有其他控制器可以匹配這個功能,只適用於不同的項目,而且它們工作正常。我甚至把一個工作控制器的DELETE函數粘貼到這個函數中,並得到了相同的錯誤。 – frisbeetarian 2012-08-17 03:10:02