表單提交出現400錯誤(SSM)

蔡徐坤衝充崇發表於2020-12-25

總結:
1:一般最常見的就是後臺的實體類bean與前臺穿過的型別不匹配,如你的javabean中有定義了Date型別和int型別的成員變數,導致轉化器在把json資料轉化成bean時不能轉化。(常見)
解決:表單中的<input/>裡的name屬性的值是否與自己建立的實體類屬性一一對應(區分大小寫)
2:要返回json的卻忘了加@ResponseBody
3.傳遞了不屬於實體類的屬性過來,而Controller中標明瞭接受的時實體類屬性
4.提交表單中有Date屬性的值,也就是實體類中有Date屬性(常見)
解決方法:
1.實體類中加上 @DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)註解

 //拍賣開始時間
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date begintime;
    //拍賣結束時間
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endtime;

2.把實體類的javabean裡邊的型別都改成string型別,在配置SQL語句時用資料庫函式to_date或者to_number轉化的,如果再java中用到這個字串型別的日期的話,有必要的話,就用For format=new SimpleDateFormat(“yyyy-MM-dd”),format.parse()來轉換。
3.控制器中加入一段資料繫結的程式碼

//將字串轉換為Date類
@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {
//轉換日期格式
DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//註冊自定義的編輯器
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

form的序列化提交表單帶過去的引數全都被序列化成了字串型別,後端的欄位型別如果是int、date等型別的需要手動將set方法給轉換一下,轉換方法上面一大堆中有。

相關文章