0

我有以下问题:每当我尝试编辑以下数据时,我都会收到一个异常,说HTTP PUT is not supported by this URL。这是使用按钮编辑该行的 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 方法导致了问题。我已经获得了我需要的所有依赖项。

4

1 回答 1

2

只有get并且官方支持表单post。我不知道有任何浏览器支持表单。但是,它支持。putAJAX

除此之外,Java Servlet API 的支持PUT并不理想。您可能需要在 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

于 2013-07-04T16:49:39.093 回答