WEB開發中最頻繁使用的就是參數傳遞,頁面添加表單,然後提交到Controller,Controller接收參數,做進一步的處理,然後寫入數據庫,這裡就涉及到SpringMVC對參數到對象Bean的映射
問題
1、Spring默認支持大多數類型的轉換,String,Integer等等
2、因為默認表單傳過來字符串,如果想轉換成時間類型需要設定類型轉換
3、但是自定義的一些類型不支持,比如12:12:12想轉換成一個對象,就需要自定義轉換類
知識點文檔-官網是最好的學習資源
查看Spring官方文檔的9.5部分 Spring Type Conversion
https://docs.spring.io/spring/docs/4.3.9.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#core-convert-ConversionService-API
解決方案
1、如果想讓表單傳遞 2017-09-09格式的參數,需要SpringMVC做如下設置 ,來源官方配置
配置一個conversionService,這個id是不能變的,並設置轉換器,通過jodatime來轉換日期
然後在你接收參數的bean中設置時間轉換的註解即可,DateTimeFormat,pattern設置為你表單傳過來的樣式
用postman模擬請求截圖
2、自定義轉換器方式
當提供的自定義轉換器無法滿足業務需求的時候,就可以自定義轉換器來實現了
舉例:自定義Time類型,只保存時分秒 格式 12:12:12 Time部分源碼 如下,一個用String創建對象的方法
自定義的轉換器需要實現Convert接口,泛型是String和Time,表示從String轉換到Time,然後實現他的轉換方法代碼如下,這個代碼寫的相當粗糙,主要表達這個意思
然後配置這個轉換類,id仍然是conversionService,這樣當參數都會通過轉換器進行轉換,可以支持多個轉換器,直接配置在set標籤下面即可
ok,參數轉換就講到這裡,只是入門級的皮毛,深入內容還需要大家自己去看文檔,實際開發過程中可能會遇到各種各樣的需求和參數類型,這個轉換還是很必要的,當然你也可以直接存個字符串進去,但那樣你無法保證格式的統一性,不便於開發和維護,謝謝大家
閱讀更多 BeginCode 的文章