SpringMVC的日期类型格式转换与自定义转换器

日期的转换

  • SpringMVC中有自己默认的日期转换规则,当你输入1999/9/9时SpringMVC能够识别,但当你输入1999-9-9时就需要自己配置日期格式了

  • 使用xml配置文件配置日期转换格式


<mvc:annotation-driven conversion-service="conversionService"/>

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	
	<property name="formatters">
		
		<set>
			
			<bean class="org.springframework.format.datetime.DateFormatter">
				
				<property name="pattern" value="yyyy-MM-dd"/>
			bean>
		set>
	property>
bean>

  • 使用注解配置日期转换格式
    名称: @DateTimeFormat
    类型: 形参注解、成员变量注解
    位置:形参前面 或 成员变量上方
    作用:为当前参数或变量指定类型转换规则
    注意:依赖注解驱动支持
<mvc:annotation-driven/>
public String requestDate(@DateTimeFormat(pattern = "yyyy-MM-dd")Date date){
     
	System.out.println("date="+date);
	return "page.jsp";
}
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;

自定义类型转换器

  • 自定义类型转换器,实现Converter接口,并制定转换前与转换后的类型

<bean id="myDateConverter" class="com.springmvc.converter.MyDateConverter"/>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
	
	<property name="converters">
		
		<set>
			
			<ref bean="myDateConverter"/>
		set>
	property>
bean>
//自定义类型转换器,实现converter接口,接口中指定的泛型即为最终作用的条件
//本列中的泛型填写的是String,Date,最终出现字符串转日期时,该类型转换器生效
public class MyDateConverter implements Converter<String,Date>{
     
	//重写接口的抽象方法,参数由泛型决定
	public Date convert(String source){
     
		DateFormat df = new SimplDateFormat("yyyy-MM-dd");
		Date date = null;
		//类型转换器无法预计使用过程中出现的异常,因此必须在类型转换器内部捕获,不允许抛出,框架无法预计此类异常如何处理
		try{
     
			date = df.parse(source);
		}catch(ParseException e){
     
			e.printStackTrace();
		}
		return date;
	}
}
  • 通过注册自定义转换器,将该功能加入到SpringMVC的转换服务ConverterService中

<mvc:annotation-driven conversion-service="conversionService"/>

你可能感兴趣的:(spring)