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會失效。在配置文件加上配置就行了

 

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