在Form表单中,只支持get和post方式,而为了实现put方式,我们可以通过如下三个步骤实现
1)SpringMVC中配置HiddenHttpMethodFilter
2)页面创建一个post表单
3)创建一个input项,name="_method",值就是指定的请求方式
其中在HiddenHttpMethodFilter类中
获取"_method"的值,得到新的请求方式。
<input type="hidden" name="_method" value="put" th:if="${employee!=null}"/>
其中th
标签是thymeleaf模板,表示只有当employee
不为空时才生效,而value
中的put不区分大小写。
当时在新版本的SpringBoot中,这个put请求不发生作用。原因是因为springboot自动配置,帮我们省略了第一步的配置,上面代码方法就是为了实现自动配置,但是因为注解@ConditionalOnProperty限制了自动配置,默认false不开启配置,所以页面的put提交无法使用。 解决办法: properties配置文件中配置,使之开启自动配置: spring.mvc.hiddenmethod.filter.enabled=true
。
此外,DELETE请求也可以同样这样设置。
<form th:action="@{/emp/}+${emp.id}" method="post">
<input type="hidden" name="_method" value="delete"/>
<button type="submit" class="btn btn-sm btn-danger" > 删除</button>
</form>