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

日期的转换

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

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

<!-- 启动自定义Converter -->
<mvc:annotation-driven conversion-service="conversionService"/>
<!-- 1.设置格式类型Converter,注册为Bean,受Spring管理 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
	<!-- 2.自定义converter格式类型设定,该设定使用的是同类型覆盖的思想-->
	<property name="formatters">
		<!-- 3.使用set保障相同类型的转换器仅保留一个,避免冲突-->
		<set>
			<!-- 4.设置具体的格式类型 -->
			<bean class="org.springframework.format.datetime.DateFormatter">
				<!-- 5.类型规则 -->
				<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接口,并制定转换前与转换后的类型
<!--1.将自定义的Converter注册为Bean,受SpringMVC管理 -->
<bean id="myDateConverter" class="com.springmvc.converter.MyDateConverter"/>
<!--2.设定自定义Converter服务bean-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
	<!--3.注入所有的自定义Converter,该设定使用的是同类型覆盖的思想-->
	<property name="converters">
		<!--4.set保障同类型转换器仅保留一个,去重规则以Converter<S,T>的泛型为准-->
		<set>
			<!--5.具体的类型转换器-->
			<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"/>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值