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