SpringMVC·form表單Date類型問題導致的400問題


問題描述

前端傳yyyy-MM-dd hh:mm:ss格式的時間其實是String類型導致JavaBean中的Date類型Setter報錯,從而導致api請求400.

問題解決

我的解決方式:

在對應的實體類的對應的非字符串類型的變量的setter方法中傳入string類型的,然后在里邊用SimpleDateFormat或者Integer進行轉化

public void setReleaseEndTime(String str) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date releaseEndTime;
    try {
        releaseEndTime = sdf.parse(str);
        this.releaseEndTime = releaseEndTime;
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

網上有:

  • 1、把實體類的javabean里邊的類型都改成string類型了,在配置SQL語句時用數據庫函數to_date或者to_number轉化的,如果再java中用到這個字符串類型的日期的話,有必要的話,就用For format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()來轉換。

  • 2、還可以在實體類中定義Date和int類型對應的字符串類型成員變量,這樣前台的表單中field或者name與之對應上即可,這樣也成功轉成實體類了,不過轉成之后,得在java中把它字符串類型的轉成對應的Date或者int類型賦給相應的成員變量即可。

  • 3、最后還有一種方法,就是實體類的日期屬性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解,大部分是可以成功使用的。如果這種方法不可用的話,你看繼續嘗試如下方法:不過這個前提是前台穿過的日期為json形式而非字符串形式,如前台類似$("#id").val()來獲取日期直接傳給后台的話是不行的,你需要在前台引入JSON官網的json.js庫或者引入jQuery的jquery.json-2.4.js庫,然后如果是前者的話就new Date(stringDate).parseJSON()來轉化再傳給后台,如果是后者的話,$.toJSON(new Date(stringdate))來傳給后台,這種方式比較麻煩,有網友留言特意討論了一下這個問題,所以建議采用第一種方式。

參考文檔
SpringMVC中出現" 400 Bad Request "錯誤(用@ResponseBody處理ajax傳過來的json數據轉成bean)的解決方法


免責聲明!

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



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