restful风格 put 报错405

在实现 restful 的更新操作时,需要将表单数据以 PUT 方法提交。

下面是我的代码片段:

update.html

<form id="updateForm" action="#"  th:method="post" th:action="@{/provider}" >
                <!--发送put请求修改供应商信息-->
                <!--1. 在SpringMVC中配置HiddenHttpMethodFilter(SpringBoot自动配置好了)
                2. 页面创建一个method="post"表单
                3. 创建一个input标签 name="_method",value="指定请求方式"-->
                <input type="hidden" name="_method" value="put">
                <input type="hidden" name="pid" th:value="${provider.pid}">


                <!--div的class 为error是验证错误,ok是验证成功-->
                <div class="">。。后面省略



<div class="providerAddBtn">
                    <!--<a href="#">保存</a>-->
                    <!--<a href="providerList.html">返回</a>-->
                    <input type="button" value="保存" οnclick="$('#updateForm').submit();"/>
                    <input type="button" value="返回" οnclick="history.back(-1)"/>
                </div>

Controller:

//修改供应商信息
    @PutMapping("/provider")
    @ResponseBody
    public String update(Provider provider) {
        logger.info("修改供应商信息: " + provider);
        providerDao.save(provider);
        //重定向到列表页
        return "redirect:/providers";
    }
}

所以直接在表单提交的数据中添加 "_method" 数据并不起作用。

解决办法就是在 Spring Boot 的配置文件 application.properties 中将 hiddenmethod 过滤器设置为启用即可。

 

新的springboot版本 默认不开启 restful 分割api  需要在配置文件中开启 # 启用hiddenMethod过滤器 spring.mvc.hiddenmethod.filter.enabled=true。不然这个_method会失效。在配置文件加上配置就行了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章