SpringMVC form 表單提交報400錯誤


今天做Spring mvc REST風格的crud時,在springmvc 表單標簽<form:select> 遇到了400的問題

這是佟剛的視頻:https://www.bilibili.com/video/av14907450/?p=31

 

這個是解決方案 ,但是原因沒說清楚: https://www.cnblogs.com/yjq520/p/6755370.html

錯誤代碼:

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 
復制代碼
 private Integer id; private String lastName; private String email; private int gender; private Department department; //無參構造方法以省略 //有參構造方法以省略 //setter 和 getter 方法以省略
復制代碼

Department.java

復制代碼
private Integer id;
private String departmentName;

        //無參構造方法以省略

         //有參構造方法以省略

         //setter 和 getter 方法以省略
復制代碼

form 表單:

復制代碼
<!-- 
        可以通過 modelAttribute 屬性指定綁定的模型屬性,
        若沒有指定該屬性,則默認從 request 域對象中讀取 command 的表單 bean,
        如果該屬性值也不存在,則會發生錯誤
     -->
    <form:form action="emp-save" method="post" modelAttribute="employee">
        <!-- path 屬性對應 HTML 表單標簽的 name 屬性 -->
        LastName:<form:input path="lastName"/> <br>
        Email:<form:input path="email"/> <br>
        Gender:<form:radiobuttons path="gender" items="${genders}"/> <br>
        Department:<form:select path="department" items="${dapartments}" itemLabel="departmentName" itemValue="id"></form:select><br>
        <input type="submit" value="Submit">
    </form:form>
復制代碼

把 path="department" 改為 path="department.id"

 

 

 

原因:指明itemValue的這個id 時 employee.department.id  而不能是 employee.department

    path要正確配置,支持級聯屬性

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM