2013-07-04 52 views
0

我遇到以下問題:每當我嘗試編輯以下數據時,都會收到一條異常,說明此URL不支持HTTP PUT。這是東西,其中一個按鈕是用來編輯該行的JSP形式方面:Spring MVC REST PUT不起作用

<c:url var="formAction" value="/circuits/${circuit.circuitId}" /> 
<form:form method="PUT" action="${formAction}"> 
    <input type="hidden" name="circuitId" value="${circuit.circuitId}" /> 
    <input type="submit" value="Edit" class="btn btn-primary" /> 
</form:form> 

而下面是我的控制器方法檢索circuitId

@RequestMapping(value = "/{circuitId}", method = RequestMethod.PUT) 
public String showEditCircuitForm(@PathVariable Integer circuitId, ModelMap model) throws NoSuchRequestHandlingMethodException 

然而,當我使用正常的GET方法一切正常,只是這個PUT方法導致了這個問題。我已經獲得了我需要的所有依賴關係。

+0

刪除隱藏字段 – NimChimpsky

回答

2

只有getpostofficialy supported與窗體。我不知道任何支持put的瀏覽器都帶有表單。它支持與AJAX,雖然。

除此之外,支持PUT的Java Servlet API並不理想。你可能需要在你的web.xml過濾器:

<filter> 
    <filter-name>httpPutFormContentFilter</filter-name> 
    <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> 
</filter> 

我忘記之前:您可以發送一個請求,post並使用另一個過濾器僞造一個put要求:

<filter> 
    <filter-name>HiddenHttpMethodFilter</filter-name> 
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 
</filter> 

爲了得到這個您必須在表單中包含名稱爲_method和值PUT的隱藏字段。