1.前后台參數類型不一致
上圖錯誤提示就是客戶端發送的請求不能找到你的具體的頁面或者地址,這是Spring MVC拋出的錯誤,這樣我們就要進行參數的檢查,一定是JSP提交的參數和Controller里面的參數不一致(有很多種情況,比如我的問題),
我的JSP代碼:
<input type="hidden" title="id" name="id" value="${admin.id}">
在這里我的這個字段是叫做 "id" ,在看看我的controller里面的參數:
public AdministratorOtaResponse administratorAdminUpdate( @RequestParam(value = "adminrId", required = true) int id, @RequestParam(value = "sitePassword", required = true) String sitePassword, @RequestParam(value = "realName", required = true) String realName) {
在我的controller里面的我的Value = "adminId",就是因為這個問題啦,所以我只要改成Value = “id”,所有的事情就OK啦。
原因:這是因為前台form表單中的某些參數 和 后台接受的參數類型不一致導致的。即參數名稱相同,但是類型不一致。spring mvc在綁定參數的時候出現異常,所以返回400錯誤。但是坑爹的地方在於,這個異常會被spring mvc吃掉,不會顯示在控制台中。
解決辦法:檢查form表單中的參數和后台的參數對應,看是否有參數名相同但是類型不一致的情況。或者把當前日志設為debug 級別,然后在日志中即可看到spring 拋出的異常信息,即可發現哪個參數出現了錯誤。
2.SpringMVC form 表單提交報400錯誤
錯誤代碼: HTTP Status 400 - type Status report message description The request sent by the client was syntactically incorrect. Apache Tomcat/7.0.47
原因:
400 請求出錯
由於語法格式有誤,服務器無法理解此請求。不作修改,客戶程序就無法重復此請求。
在 SpringMVC 中的 Action 中處理前台 ajax 請求傳過來的 json 數據直接轉成對應的實體類時出錯:
400 Bad Request,后台也不報錯,400指的的是請求無效(請求有語法問題或者不能滿足請求)。
解決辦法:
檢查實體類的 javabean 里邊的類型是否和 springmvc form 的 form 表單名是否一致。
我的錯誤原因是兩個關聯的實體類導致在 form 表單中 name 名稱不一致:
Employee.java
不斷更新中。。。