SpringMVC总结之数据转换器(例:时间参数转换器)

版权声明:@AaronFo https://blog.csdn.net/sinat_33212645/article/details/85066772

1.前言

SpringMVC 通过反射机制对处理方法的签名进行分析,并将请求信息绑定到处理方法的参数中,在请求消息到达处理方法期间,SpringMVC 还会完成数据转换,数据格式化和数据检验等工作;

2.Converter转换器

2.1 Spring在org.framework.core.convert.converter包中定义了3中类型的转换器接口;

    2.1.1 Converter<S,T>接口:提供单一方法:T convert(S source);该方法负责将S类型的对象转换为T类型的对象;

    2.1.2 ConverterFactory<S,R> :提供单一方法 <T extends R>  Converter<S,T> getConverter(Class<T> targetType);该方法负责将一种类型的对象转换为另一种类型及其子类对象,例如String转换为Number及Number子类Integer、Double等对象;

    2.1.3 GenericConverter接口:该接口会根据源类对象及目标类对象的上下文信息进行类型转换。接口定义的方法如下

            1)Set<GenericConverter.ConvertiblePair> getConvertibleTypes();

            2)Object convent(Object source TypeDescriptor sourceType,TypeDescriptor  targetType);

 

3.时间转换器

3.1 在实际的开发过程中,前台如果传递字符串类型的参数birthday(2018-08-01 12:06:11),后台Date类型的birthday去接收这个值会报错,所以我们需要自定义字符串转时间类型的转换器,将传递的字符串转换为Date类型;

3.2 实现步骤:

     3.2.1 定义实现Converter<S,T>接口的实现类

package org.aaron.framework.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.core.convert.converter.Converter;

public class DateConverter implements Converter<String, Date> {

	private String pattern;
	
	public String getPattern() {
		return pattern;
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	@Override
	public Date convert(String date) {
		try {
		SimpleDateFormat dateFormat = new SimpleDateFormat(this.pattern);
			return dateFormat.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}

}

       3.2.2 在spriingmvc.xml(Spring MVC配置文件)中加入自定义转换器:

	<!-- conversionService 自定义字符串-时间转换器 -->
	<mvc:annotation-driven conversion-service="conversionService" />
		<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
			<!-- 转换器 -->
			<property name="converters">
				<list>
					<bean class="org.aaron.framework.common.DateConverter" p:pattern="yyyy-MM-dd HH:mm:ss" />
				</list>
			</property>
		</bean>
	

猜你喜欢

转载自blog.csdn.net/sinat_33212645/article/details/85066772
今日推荐