SpringMVC自定义日期转换器方式
作者:xuebanub1
这篇文章主要介绍了SpringMVC如何自定义日期转换器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
一、问题
问题
- 当日期传参格式为2023/5/13时,因为这是Spring默认日期格式,所以能解析
- 当日期传参格式为2023-5-13时,因为这不是Spring默认日期格式,所以不能解析
解决方案
- 自定义日期格式
二、实现Converter<S,T>接口
1.该接口位置
org.springframework.core.convert.converter.Converter
2.创建DateConverter实现类
实现convert方法
public class DateConverter implements Converter<String,Date> { @Override public Date convert(String s) { //将日期字符串转换为日期对象返回 //自定义日期格式 SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Date date; try { //转换 date = sf.parse(s); } catch (ParseException e) { throw new RuntimeException(e); } //将日期对象返回 return date; } }
三、在Spring-MVC.xml配置文件中声明转换器
1.设置id
conversionService
2.设置class
org.springframework.context.support.ConversionServiceFactoryBean
3.配置converters属性
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <!--配置converters属性--> <property name="converters"> <list> <!--指向DateConverter实现类--> <bean class="com.jd.converter.DateConverter"></bean> </list> </property> </bean>
四、在mvc注解中引用转换器
<!--mvc的注解驱动--> <mvc:annotation-driven conversion-service="conversionService"/>
conversion-servic
的值为第三步设置的id(即转换器的id)
五、测试
1.接收日期参数并打印
@Controller public class UserController { @RequestMapping(value = "/quick13") @ResponseBody public void save13(Date date){ System.out.println(date); } }
2.在网页输入url传参
- 参数:date=2023-5-13
http://localhost:8080/quick13?date=2023-5-13
- 打印结果
Sat May 13 00:00:00 CST 2023
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。