`
西门吹牛
  • 浏览: 227235 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

spring mvc前台时间字符串到后台Date的转换

 
阅读更多
无意中发现对于时间字符串转Date类,根本不用自己去写转换类,spring mvc已经实现了该功能,还是基于注解的,轻松省事,使用org.springframework.format.support.FormattingConversionServiceFactoryBean
之后,只要在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>


分享到:
评论
2 楼 wang263574375 2014-10-11  
楼上的能不能配置一个简单的例子出来
1 楼 tss0823 2014-04-10  

相关推荐

    spring mvc3.1.0 日期自动转换

    2. 类型转换:在上述示例中,Spring MVC使用`org.springframework.core.convert.converter.Converter`接口来实现字符串到日期的转换。开发者可以自定义转换器,也可以使用Spring提供的默认转换器,如`...

    基于Spring MVC框架的商品管理系统.zip

    基于Spring MVC框架的商品管理系统 项目简介 本项目是一个基于Spring MVC框架的商品管理系统,... 日期转换器将字符串格式的日期转换为Date对象。 字符串去空格转换器对输入的字符串进行去空格处理。 4. 异常处理

    29 Spring MVC之类型转换Converter慕课专栏1

    在Spring MVC中,类型转换是将用户输入的数据(通常是字符串)转换为模型对象中的预期类型。在早期版本中,我们依赖于`PropertyEditor`来完成这个任务,它只能处理从`String`到其他类型的转换。然而,随着Spring的...

    基于Spring MVC的项目管理系统.zip

    基于Spring MVC的项目管理系统 ... com.ujiuye.converter日期转换器,用于将字符串格式的日期转换为Date对象。 com.ujiuye.cust.bean客户实体类,包含客户的基本信息和公司信息。 com.ujiuye.cust.controller

    Spring MVC学习(七)-------SpringMVC数据类型转换

    - **类型转换**:利用`PropertyEditor`的`setAsText(String)`方法进行字符串到对象的转换,如果需要进一步的处理,则会调用`setValue(Object)`方法。 - **数据验证**:需要显式地调用实现了`Validator`接口的类来...

    spring mvc注释文档

    例如,方法可以接收类型为`HttpServletRequest`、`HttpServletResponse`、`Model`、`ModelMap`、`SessionStatus`、`HttpSession`等类型的参数,也可以返回字符串类型(视图名称)或者`void`类型。 #### 注册自己的...

    Spring_MVC_3.0实战指南

    这段代码注册了一个自定义的日期编辑器,用于将请求中的字符串格式转换为 `Date` 对象,并且可以设置日期格式不宽松。 #### 数据模型控制 在 Spring MVC 中,可以通过 `Model` 或 `ModelMap` 对象向视图传递数据。...

    spring mvc 接口

    这里我们使用了 `@ResponseBody` 注解来告诉 Spring MVC 直接将返回的对象转换为 JSON 格式的字符串。同时,`produces` 属性指定了返回的内容类型为 JSON。 ### 总结 本文详细介绍了如何在 Spring MVC 中创建一个...

    Spring MVC之@RequestMapping详解

    例如,对于JSON数据,Jackson或Gson库的Converter会被使用,将Java对象转换成JSON字符串,反之亦然。 示例代码: ```java @Controller @RequestMapping("/appointments") public class AppointmentsController { /...

    Spring MVC自定义日期类型转换器实例详解

    在Web层与APP端或客户端的数据交互中,尤其是涉及到日期类型的数据时,通常需要将其转换为字符串格式进行传输。如果转换不正确或不符合约定的格式,可能会导致数据解析错误或用户体验不佳。 在给出的文件内容中,...

    数据源和转换器和自定义MVC

    例如,一个日期字符串可能需要转换成`java.util.Date`对象,或者一个货币值可能需要格式化并转换成`BigDecimal`。Spring MVC中,你可以通过实现`Converter`或`ConverterFactory`接口来创建自定义转换器,并将其注册...

    struts的form不能初始化java.util.Date类型

    - **使用PropertyEditor**:在ActionForm或Action类中注册一个自定义的`java.beans.PropertyEditor`,处理日期字符串到Date对象的转换。 - **使用Struts的datetime标签**:如果使用Struts的标签库,可以使用`...

    专题资料(2021-2022年)SpringMVC数据类型转换要点.doc

    - **格式化器(Formatter)**:`Formatter`接口用于对象到字符串和字符串到对象的转换,主要用于格式化显示和解析输入数据,如日期格式化。 - **数据绑定(WebDataBinder)**:WebDataBinder负责将请求参数绑定到...

    SpringMVC之DataBinding和Validation--Validator,PropertyEditor,Converter,Formatter

    例如,如果你需要将请求参数的日期字符串转换为`java.util.Date`对象,你可以自定义一个`PropertyEditor`实现。Spring MVC会自动寻找合适的`PropertyEditor`并将参数值转换为正确的类型。 `Converter`和`Formatter`...

    springmvc注解式控制器的数据验证、类型转换及格式化 SpringMVC数据验证

    例如,我们可以自定义`Converter`或`Formatter`来处理特定类型的转换,如将日期字符串转换为`java.util.Date`对象。默认情况下,Spring MVC提供了一些内置的转换器,可以处理基本类型和简单对象的转换。 然后,**...

    springmvc类型转换.md

    当请求参数中的日期时间格式与此不一致时,Spring MVC会自动进行转换。 ##### 2. 通过`@InitBinder`注解进行初始化绑定器 在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@...

    springmvc第二天课堂笔记.docx

    同时,也支持简单数据类型的绑定,如整型、字符串、日期等。 八、自定义参数绑定 自定义参数绑定是 Spring MVC 框架中的一个重要特性,允许用户自定义参数绑定的规则。如日期类型绑定,可以定义一个 Converter, ...

    SpringMVC日期类型接收空值异常问题解决方法

    这个问题的出现是因为 SpringMVC 框架在接收到空字符串时,无法自动将其转换为 Date 类型。解决这个问题的方法是使用 @InitBinder 注解,并在其对应的方法中注册一个自定义的日期编辑器。 在 SpringMVC 框架中,...

    31 Converter还是Formatter?慕课专栏1

    例如,如果你需要将字符串`String`转换为日期`Date`,你可以创建一个实现了`Converter, Date&gt;`接口的类,如`StringToDateConverter`。这个转换器类通常会实现自定义的转换逻辑,例如使用`SimpleDateFormat`解析日期...

Global site tag (gtag.js) - Google Analytics