2013-07-04 54 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的隐藏字段。