日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

springMVC 前后台日期格式传值解决方式之一(共二) @DateTimeFormat的使用和配置...

發(fā)布時間:2025/3/19 c/c++ 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springMVC 前后台日期格式传值解决方式之一(共二) @DateTimeFormat的使用和配置... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?

無意中發(fā)現(xiàn)對于時間字符串轉(zhuǎn)Date類,根本不用自己去寫轉(zhuǎn)換類,spring mvc已經(jīng)實現(xiàn)了該功能,還是基于注解的,輕松省事,使用 org.springframework.format.support.FormattingConversionServiceFactoryBean
之后,只要在vo里加注解就行了

?

使用時要引入一個類庫joda-time-n.n.jar

?

Java代碼 ?
  • @DateTimeFormat(pattern="yyyy-MM-dd")??
  • private?Date?dateRangeStart;//?通行日期范圍開始??


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

    怎么注冊呢?

    Java代碼 ?
  • <bean?id="conversionService"????
  • class="org.springframework.format.support.FormattingConversionServiceFactoryBean">???
  • <mvc:annotation-driven?validator="validator"????
  • ????conversion-service="conversionService"?/>????


  • 使用<mvc:annotation-driven /> 的話,默認(rèn)就啟用FormattingConversionServiceFactoryBean了,所以上面的配置也省了。
    但是<mvc:annotation-driven />基本不用,因為總得做些個性化設(shè)置,那怎么注冊FormattingConversionServiceFactoryBean給spring mvc呢?
    起初我以為得從DefaultAnnotationHandlerMapping入手,后來通過看<mvc:annotation- driven />的解析器AnnotationDrivenBeanDefinitionParser源碼,才發(fā)現(xiàn)原來是 AnnotationMethodHandlerAdapter的屬性

    Java代碼 ?
  • RuntimeBeanReference?conversionService?=?getConversionService(element,?source,?parserContext);??
  • RuntimeBeanReference?validator?=?getValidator(element,?source,?parserContext);??
  • ??
  • RootBeanDefinition?bindingDef?=?new?RootBeanDefinition(ConfigurableWebBindingInitializer.class);??
  • bindingDef.setSource(source);??
  • bindingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);??
  • bindingDef.getPropertyValues().add("conversionService",?conversionService);??
  • bindingDef.getPropertyValues().add("validator",?validator);??
  • ??
  • RootBeanDefinition?annAdapterDef?=?new?RootBeanDefinition(AnnotationMethodHandlerAdapter.class);??
  • annAdapterDef.setSource(source);??
  • annAdapterDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);??
  • annAdapterDef.getPropertyValues().add("webBindingInitializer",?bindingDef);??
  • annAdapterDef.getPropertyValues().add("messageConverters",?getMessageConverters(source));??

  • getConversionService方法內(nèi)部

    Java代碼 ?
  • if?(element.hasAttribute("conversion-service"))?{??
  • ????return?new?RuntimeBeanReference(element.getAttribute("conversion-service"));??
  • }??
  • else?{??
  • ????RootBeanDefinition?conversionDef?=?new?RootBeanDefinition(FormattingConversionServiceFactoryBean.class);??
  • ????conversionDef.setSource(source);??
  • ????conversionDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);??
  • ????String?conversionName?=?parserContext.getReaderContext().registerWithGeneratedName(conversionDef);??
  • ????parserContext.registerComponent(new?BeanComponentDefinition(conversionDef,?conversionName));??
  • ????return?new?RuntimeBeanReference(conversionName);??
  • }??


  • 原來<mvc:annotation-driven />是這么注冊FormattingConversionServiceFactoryBean的
    如果不使用<mvc:annotation-driven />標(biāo)簽的話,只要配置AnnotationMethodHandlerAdapter的屬性就可以了

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" ><!-- 支持@DateTimeFormat(pattern="yyyy-MM-dd")等注解 2015年7月31日11:07:03 liuyx--><property name="webBindingInitializer"> <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"> <property name="conversionService"> <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"></bean> </property> </bean> </property></bean>

    ?

    原文:http://relive123-yahoo-com-cn.iteye.com/blog/1678376

    總結(jié)

    以上是生活随笔為你收集整理的springMVC 前后台日期格式传值解决方式之一(共二) @DateTimeFormat的使用和配置...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。