Spring MVC REST PUT无法正常工作

时间:2013-07-04 15:36:48

标签: rest spring-mvc

我遇到以下问题:每当我尝试编辑以下数据时,我都会收到一个例外情况,说明此网址不支持 HTTP PUT 。这是使用按钮编辑该行的JSP表单方面:

<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方法引起了问题。我有我需要的所有依赖项。

1 个答案:

答案 0 :(得分: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的隐藏字段。