知識點-SSM表單參數綁定及自定義

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來轉換日期

知識點-SSM表單參數綁定及自定義

conversionService配置日期轉換

然後在你接收參數的bean中設置時間轉換的註解即可,DateTimeFormat,pattern設置為你表單傳過來的樣式

知識點-SSM表單參數綁定及自定義

接收表單的實體bean

用postman模擬請求截圖

知識點-SSM表單參數綁定及自定義

POST模擬HTTP請求

2、自定義轉換器方式

當提供的自定義轉換器無法滿足業務需求的時候,就可以自定義轉換器來實現了

舉例:自定義Time類型,只保存時分秒 格式 12:12:12 Time部分源碼 如下,一個用String創建對象的方法

知識點-SSM表單參數綁定及自定義

Time部分源碼,三個整形值表示時分秒

自定義的轉換器需要實現Convert接口,泛型是String和Time,表示從String轉換到Time,然後實現他的轉換方法代碼如下,這個代碼寫的相當粗糙,主要表達這個意思

知識點-SSM表單參數綁定及自定義

String到Time的轉換類

然後配置這個轉換類,id仍然是conversionService,這樣當參數都會通過轉換器進行轉換,可以支持多個轉換器,直接配置在set標籤下面即可

知識點-SSM表單參數綁定及自定義

轉換器配置

ok,參數轉換就講到這裡,只是入門級的皮毛,深入內容還需要大家自己去看文檔,實際開發過程中可能會遇到各種各樣的需求和參數類型,這個轉換還是很必要的,當然你也可以直接存個字符串進去,但那樣你無法保證格式的統一性,不便於開發和維護,謝謝大家


知識點-SSM表單參數綁定及自定義

BeginCode出品


分享到:


相關文章: