也許這應該是行不通的,但至少我想明白爲什麼。我在PUT
body中傳遞了一個簡單的val = somevalue,但是spring發回400 Bad Request
,因爲它似乎沒有識別val參數。如果使用PUT,SpringMVC無法識別請求身體參數
相似的請求使用POST
。難道是SpringMVC不認識PUT
請求身體作爲參數的來源嗎?
Content=-Type
在兩種情況下都正確設置爲application/x-www-form-urlencoded。
春天拒絕調用的方法是這樣的:
@RequestMapping(value = "config/{key}", method = RequestMethod.PUT)
@ResponseBody
public void configUpdateCreate(final Model model, @PathVariable final String key, @RequestParam final String val,
final HttpServletResponse response) throws IOException
{
//...
}
爲了完整起見,這裏是jQuery的AJAX調用。我看不出有什麼問題。客戶端是Firefox 4或Chrome,都顯示相同的結果。
$.ajax({
url:url,
type:'PUT',
data:'val=' + encodeURIComponent(configValue),
success: function(data) {...}
});
任何想法?
當它更改爲POST時,它會工作嗎? – 2011-05-05 12:30:33
爲什麼用@ResponseBody在void方法中註釋該方法?該註釋應該表明返回類型應直接寫入HTTP響應主體。我認爲情況並非如此。你可以嘗試這樣做,以及:數據:{「VAL」,encodeURIComponent方法(configValue)}, – Javi 2011-05-05 14:53:10
那是什麼回來與400代碼錯誤消息? – skaffman 2011-05-05 17:06:06