Spring MVC可以处理来自POST和GET以外的HTML表单的请求吗?

Spring 3 MVC支持所有4种RESTful方法:GET,POST,PUT和DELETE。但它的视图技术是否在表格上支持它们?如果没有,
form:form
标签中
method
属性的实际用途是什么? 我尝试在表单上使用PUT方法:
<form:form action="/myaction" method="PUT">
   ...
</form:form>
生成的HTML是:
<form id="command" action="/myaction" method="post">
   <input type="hidden" name="_method" value="PUT"/>
   ...
</form>
很明显,因为除了GET和POST之外,大多数浏览器都不支持其他方法。但Spring可以使用额外的
input
来处理它,名称为
_method
,值为
METHOD_NAME
。可以? 当我将指定的表单发送到带注释的控制器方法时
@RequestMapping(method=RequestMethod.PUT)
它声称,不支持请求方法
POST
。但为什么
POST
而不是
PUT
?在引擎盖下实际发生了什么?     
已邀请:
使用名为“ѭ5”的“隐藏参数”并不是特定于Spring MVC的标记库,但也被其他一些客户端框架使用。 Spring正遵循惯例,例如它。 为了正确使用它,你需要在
web.xml
中添加一个过滤器,(
HiddenHttpMethodFilter
,参见javadoc),它将
_method
参数转换为
HttpServletRequest
中的“真实”HTTP方法表示。这是作为过滤器来完成的,以强调缺少
PUT
DELETE
是一个浏览器问题 - servlet API支持它就好了。 因此,如果要在表单中使用这些方法,则需要添加该过滤器。 附:您收到“POST not supported”消息的原因是您的表单使用
POST
,并且您的处理程序使用
PUT
进行注释,因此它不匹配。由于您没有定义过滤器,因此忽略
_method
参数。     

要回复问题请先登录注册