我遇到以下问题:每当我尝试编辑以下数据时,我都会收到一个例外情况,说明此网址不支持 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方法引起了问题。我有我需要的所有依赖项。
答案 0 :(得分:2)
表格中只有get
和post
为officialy 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
的隐藏字段。