1. 程式人生 > >spring mvc前臺時間字串到後臺Date的轉換

spring mvc前臺時間字串到後臺Date的轉換

對於時間字串轉Date類,根本不用自己去寫轉換類,spring mvc已經實現了該功能,還是基於註解的,輕鬆省事,使用org.springframework.format.support.FormattingConversionServiceFactoryBean 
之後,只要在vo里加註解就行了 

Java程式碼  收藏程式碼
  1. @DateTimeFormat(pattern="yyyy-MM-dd")  
  2. private Date dateRangeStart;// 通行日期範圍開始  


@DateTimeFormat(pattern="yyyy-MM-dd") 可將形如1980-0-01的字串轉換到Date類 
@NumberFormat(pattern="#,###.##") 可將形如4,500.00的字串轉換成long型別 


怎麼註冊呢? 

Java程式碼  收藏程式碼
  1. <bean id="conversionService"    
  2. class="org.springframework.format.support.FormattingConversionServiceFactoryBean">   
  3. <mvc:annotation-driven validator="validator"    
  4.     conversion-service="conversionService" />    


使用<mvc:annotation-driven /> 的話,預設就啟用FormattingConversionServiceFactoryBean了,所以上面的配置也省了。 

但是<mvc:annotation-driven />基本不用,因為總得做些個性化設定,那怎麼註冊FormattingConversionServiceFactoryBean給spring mvc呢? 
起初我以為得從DefaultAnnotationHandlerMapping入手,後來通過看<mvc:annotation-driven />的解析器AnnotationDrivenBeanDefinitionParser原始碼,才發現原來是AnnotationMethodHandlerAdapter的屬性 
Java程式碼  收藏程式碼
  1. RuntimeBeanReference conversionService = getConversionService(element, source, parserContext);  
  2. RuntimeBeanReference validator = getValidator(element, source, parserContext);  
  3. RootBeanDefinition bindingDef = new RootBeanDefinition(ConfigurableWebBindingInitializer.class);  
  4. bindingDef.setSource(source);  
  5. bindingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);  
  6. bindingDef.getPropertyValues().add("conversionService", conversionService);  
  7. bindingDef.getPropertyValues().add("validator", validator);  
  8. RootBeanDefinition annAdapterDef = new RootBeanDefinition(AnnotationMethodHandlerAdapter.class);  
  9. annAdapterDef.setSource(source);  
  10. annAdapterDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);  
  11. annAdapterDef.getPropertyValues().add("webBindingInitializer", bindingDef);  
  12. annAdapterDef.getPropertyValues().add("messageConverters", getMessageConverters(source));  

getConversionService方法內部 
Java程式碼  收藏程式碼
  1. if (element.hasAttribute("conversion-service")) {  
  2.     return new RuntimeBeanReference(element.getAttribute("conversion-service"));  
  3. }  
  4. else {  
  5.     RootBeanDefinition conversionDef = new RootBeanDefinition(FormattingConversionServiceFactoryBean.class);  
  6.     conversionDef.setSource(source);  
  7.     conversionDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);  
  8.     String conversionName = parserContext.getReaderContext().registerWithGeneratedName(conversionDef);  
  9.     parserContext.registerComponent(new BeanComponentDefinition(conversionDef, conversionName));  
  10.     return new RuntimeBeanReference(conversionName);  
  11. }  


原來<mvc:annotation-driven />是這麼註冊FormattingConversionServiceFactoryBean的 
如果不使用<mvc:annotation-driven />標籤的話,只要配置AnnotationMethodHandlerAdapter的屬性就可以了 
Java程式碼  收藏程式碼
  1. <property name="webBindingInitializer">  
  2.     <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">  
  3.         <property name="conversionService">  
  4.             <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean>  
  5.         </property>  
  6.     </bean>  
  7. </property>  

相關推薦

spring mvc前臺時間字串後臺Date轉換

對於時間字串轉Date類,根本不用自己去寫轉換類,spring mvc已經實現了該功能,還是基於註解的,輕鬆省事,使用org.springframework.format.support.FormattingConversionServiceFactoryBean 之後,只要

spring mvc 將頁面string型別日期轉換後臺Date日期

<!-- html頁面開課時間 --> <input type="datetime" name="startClassTime" id="startClassTime" value=

使用spring mvc前臺獲取後臺返回的List

在web的開發中,我們經常會用到在歡迎頁面載入的同時,也會查詢後臺的資料將其顯示在頁面上,這裡有一個辦法我們可以嘗試一下。 假如我想在一進入歡迎頁面的時候就顯示後臺資料庫中事先存放好的資料,那麼我們可以這樣做: 將action寫在web.xml中: <w

spring mvc 前臺後臺傳遞引數方法總結

1.restful 前臺程式碼 var userName = "test"; var userMobile = "gz"; $.ajax({                         url:"user/modify/"+username+"/"+userMobile

spring mvc 請求引數String 轉date

以spring boot為背景 1 實現org.springframework.core.convert.converter.Converter介面生成一個自定義Converter。 public class DateConverter implements Converter&l

java後臺date轉換到mysql的datetime型別的方法

mysql中儲存時間(date)型別,一般用datetime。所以java後臺把當前時間或者固定時間傳參的時候,也需要轉換為時間戳型別。只有這樣 時:分:秒 會正常顯示數值,也不會出現秒的後面多一個 .0 的情況。 News news= new News(); java.uti

spring mvc 圖片上傳+圖片格式轉換+圖片壓縮

利用springmvc進行圖片處理,本例中用到了imageio和谷歌壓縮工具類Thumbnails,下面是程式碼僅供參考,如有不足之可在下方留言或者自行更正 @RequestMapping("/uploadFile") @ResponseBody public Map<Str

String,時間戳,date轉換

工具類: public static Date parseToDate(String str,String format){ DateFormat df = new SimpleDateFormat(format); try{ return df.parse(str)

spring mvc返回json字串的方式

 spring mvc返回json字串的方式 方案一:使用@ResponseBody 註解返回響應體 直接將返回值序列化json            優點:不需要自己再處理 步驟一:

J2EE for Spring MVC註解的方式把物件轉換成json不成功的問題解決

剛剛遇到一個很頭疼的問題,那就是用註解配置java物件2json不成功的問題。 經過一番倒騰以後終於找到了問題的原因,真不能小看xml的名稱空間,我們知道jaava是在那個版本開始支援註解的,但是轉換json通過註解方式需要mvc3.0的支援,原來一開始我

spring mvc 日期引數string轉date問題

在很多時候,從前端傳入一個日期字串,通過mvc接收對映為date型別,但是會報錯,這種情況需要在實體類中新增DateTimeFormat註解,設定格式,便可以接收返回public class User { @DateTimeFormat( pattern = "yyy

Python之time模組的時間戳、時間字串格式化與轉換(13位時間戳)

Python處理時間和時間戳的內建模組就有time,和datetime兩個,本文先說time模組。 關於時間戳的幾個概念 時間戳,根據1970年1月1日00:00:00開始按秒計算的偏移量。 時間元組(struct_time),包含9個元素。 t

Spring MVC前臺使用html頁面作為檢視,配置靜態資源後Controller控制器不起作用的解決辦法

1.Spring MVC搭建專案的時候,想使用html頁面作為前端的檢視,你會發現html頁面不能訪問,原因是由於Spring攔截器將其攔截尋找控制器的緣故,解決辦法就是配置靜態資源: 1 <mvc:resources mapping="/js/*.js" location="/js/" />

spring mvc常見註解:後臺接收引數

一:@RequestMapping 前臺訪問後臺時,根據@RequestMapping內容進行控制器層的對應與函式對應 1.@RequestMapping(“exp”) 一般寫於類或函式上,完全匹配,可匹配exp,可能匹配exp.json 2.@RequestMapping

spring mvc使用GET請求獲取Date型別的方法

最近在專案是使用GET進行請求,且後臺接收引數的型別為Date出現為null的情況,經過在網上查找了下可以在接收引數的欄位使用@DateTimeFormat這一註解來解決問題。 例如:@RequestMapping(value="/fetch" , method=Reque

android初學------根據日期時間字串返回date資料 獲取年月日

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date2; date2 = format.

spring mvc ajax請求form表單轉換成json

在使用jquery傳送ajax請求的時候,通過jquery的serialize()方法對錶單進行處理髮送到服務端是比較方便的。有一種場景是,欄位大部分在form表單下,個別欄位需要組裝,如果需要組裝的欄位比較簡單,可以使用serializeArray()將form序列化成ar

spring mvc json 時間格式處理

從後臺返回json格式的資料,timestamp 型別的資料,在前臺顯示為long型別的, 很是苦惱, 研究了很長時間,下面總結一下: SpringMVC使用@ResponseBody時返回j

Spring MVC傳遞URL到後臺引數為空

除錯手機WAP站,傳遞多個引數到Controller層,結果發現mesage引數為空,而其他引數卻不為空。 @RequestMapping("msgbox") public String msgbox(Model model, boolean success, Stri

springmvc/springboot處理前臺字串日期自動轉換後臺date型別的三種辦法

問題還原:當前臺提交日期格式資料到後臺儲存時,已辦以字串的形式傳輸,如果後臺是data型別接受的話會報400格式錯誤。這時候就需要處理一下:  第0種(最low的方式):後臺用String型別欄位接收,如果需要使用再換成date。 第1種:使用@DateTimeFormat