關於SpringMVC, bean對象中含有Date型變,改如何接收數據的問題。


前提:昨天夫君十萬火急的呼喚我,說他程序報錯了。錯誤很簡單,String類型 轉換Date類型失敗。關鍵的是,他看不到前台頁面,也沒辦法打斷點看數據情況。於是,我決定拯救萬民於水火之中,總結一下 關於前后台數據傳輸時候String和Date的類型轉換問題。

 簡單寫了一個小程序,使用的框架是SSM。

前端jsp 如下圖:

 

bean層 如下圖所示:

控制層 如下圖所示:

這樣 運行整個項目,報錯。因為String類型轉換Date類型失敗。

-----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

目前有幾種辦法解決,我們一個一個說:

第一種:(從前台入手)

  前台給后台傳日期類型的值,這個值的格式 大體有兩種。一種是2018-02-01,另一種是2018/02/01。

  當傳入的日期類型格式為2018-02-01時:

  

  運行結果為:(報錯

  

  注: 造成錯誤400的原因--前端提交數據的字段名稱或者是字段類型和后台的實體類不一致,導致無法封裝。

 

  當傳入的格式為2018/02/01時:

  

   運行結果為:(不報錯

  

  注:顯示出現中文亂碼,因為沒有在配置文件中,做處理。下一篇再講解關於中文亂碼的問題。

 

   關於第一種辦法的小結:   

  1.當前端的日期按照2018/02/01的格式傳輸給后台時,程序可以將該字符串類型的日期自動轉換成日期格式,存儲到實體類中。

  2.當前端的日期按照2018-02-01的格式傳輸給后台時,程序無法轉換,拋異常。一般情況下,使用日期控件傳回來的日期格式為2018-02-01.

  -----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

 第二種:(從控制層入手)

    個人比較推薦這種做法,在控制層 加入如下一個方法:

    

    代碼如下:

        @InitBinder
        public void initBinder(ServletRequestDataBinder bin) {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
             CustomDateEditor cust = new CustomDateEditor(sdf, true);
             bin.registerCustomEditor(Date.class, cust);
        }

     運行展示:

    

    

    注:這種辦法 不僅使用於對象中的Date類型變量,同樣使用於Date類型的對象。

    將controller做下更改:

    

    運行:

    

    結果:

    

 

   -----------------------------------------------------------------------------我是分隔符--------------------------------------------------------------------------------

 

    其實,也可以用String類型的變量去接受這樣一個數據,然后再將這個String類型轉換成Date類型(通過SimpleDateFormat)。這個方法,就不舉例了。

    希望越來越好。2月加油。~~~~


免責聲明!

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



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