spring mvc前台时间字符串到后台Date的转换
来源:互联网 发布:淘宝男装好的店铺 编辑:程序博客网 时间:2024/06/05 15:02
无意中发现对于时间字符串转Date类,根本不用自己去写转换类,spring mvc已经实现了该功能,还是基于注解的,轻松省事,使用org.springframework.format.support.FormattingConversionServiceFactoryBean
之后,只要在vo里加注解就行了
@DateTimeFormat(pattern="yyyy-MM-dd") 可将形如1980-0-01的字符串转换到Date类
@NumberFormat(pattern="#,###.##") 可将形如4,500.00的字符串转换成long类型
怎么注册呢?
使用<mvc:annotation-driven /> 的话,默认就启用FormattingConversionServiceFactoryBean了,所以上面的配置也省了。
但是<mvc:annotation-driven />基本不用,因为总得做些个性化设置,那怎么注册FormattingConversionServiceFactoryBean给spring mvc呢?
起初我以为得从DefaultAnnotationHandlerMapping入手,后来通过看<mvc:annotation-driven />的解析器AnnotationDrivenBeanDefinitionParser源码,才发现原来是AnnotationMethodHandlerAdapter的属性
getConversionService方法内部
原来<mvc:annotation-driven />是这么注册FormattingConversionServiceFactoryBean的
如果不使用<mvc:annotation-driven />标签的话,只要配置AnnotationMethodHandlerAdapter的属性就可以了
之后,只要在vo里加注解就行了
- @DateTimeFormat(pattern="yyyy-MM-dd")
- private Date dateRangeStart;// 通行日期范围开始
@DateTimeFormat(pattern="yyyy-MM-dd") 可将形如1980-0-01的字符串转换到Date类
@NumberFormat(pattern="#,###.##") 可将形如4,500.00的字符串转换成long类型
怎么注册呢?
- <bean id="conversionService"
- class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
- <mvc:annotation-driven validator="validator"
- conversion-service="conversionService" />
使用<mvc:annotation-driven /> 的话,默认就启用FormattingConversionServiceFactoryBean了,所以上面的配置也省了。
但是<mvc:annotation-driven />基本不用,因为总得做些个性化设置,那怎么注册FormattingConversionServiceFactoryBean给spring mvc呢?
起初我以为得从DefaultAnnotationHandlerMapping入手,后来通过看<mvc:annotation-driven />的解析器AnnotationDrivenBeanDefinitionParser源码,才发现原来是AnnotationMethodHandlerAdapter的属性
- 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方法内部
- 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 />标签的话,只要配置AnnotationMethodHandlerAdapter的属性就可以了
- <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>
0 0
- spring mvc前台时间字符串到后台Date的转换
- spring mvc前台时间字符串到后台Date的转换
- spring mvc前台时间字符串到后台Date的转换
- spring mvc前台时间字符串到后台Date的转换
- spring mvc前台时间字符串到后台Date的转换
- spring mvc前台时间字符串到后台Date的转换
- springMVC前台时间字符串到后台Date的转换
- spring mvc 前台到后台 时间类型是怎样处理的?
- Spring MVC处理前台到后台绑定时间格式、doble等数据的解决方式
- Spring mvc 提交时间 String Date 的转换问题
- java后台传日期date 到前台变成字符串的解决方法
- spring-mvc(二)前台easyui到后台传值
- spring mvc @InitBinder(前台ajax传过来的json字符串后台无法接收)
- Spring mvc 下通过前台传参数到后台Controller 的方法
- 后台date类型转换为json字符串时,返回前台页面的是long time值问题解决
- js前台传递json字符串数组到后台有后台转换成list集合或其他格式的问题解决
- spring mvc前台取不到后台@ModelAtttribute的一种情况
- 使用spring mvc前台获取后台返回的List
- SpringMVC日期转换之JsonSerialize
- Android中组装xml文件内容
- Android开源框架ImageLoader的完美例子
- Eclipse中配置NDK R10环境
- 上/下拉电阻对GPIO的影响
- spring mvc前台时间字符串到后台Date的转换
- 【Flume】【源码分析】flume中FailoverSinkProcessor容错处理机制源码分析
- 现金流 for ipad
- java获取文件Mime Type的几种方式
- 程序员想打基础看那几本书
- 一步一步写算法(之单向链表)
- spring mvc绑定对象String转Date
- linux内核设计与实现读书笔记——页高速缓存
- aptitude和apt-get的区别和联系【转,有添加和修改】