spring配置Converter、Formatter日期转换器
本文内容纲要:
最近有点恶补spring的嫌疑,然后学了一点知识点纪录在此。
往往在项目中我们会遇到前端页面输入一个日期类型的字符串传递到后端后我们需要去做转换。甚至在传递的过程中就会报错。
Spring有一个一劳永逸的办法,配置好按照自己的规则转换后就不需要再java后端继续转换了
需要spring的jar可以到spring官方网站去下载。
1.首先第一种convertor转换器
packagecom.converter;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importorg.springframework.core.convert.converter.Converter;
publicclassStringDateimplementsConverter<String,Date>{
//日期转换格式
privateStringpattern;
//构造函数
publicStringDate(Stringpattern){
super();
this.pattern=pattern;
}
@Override
publicDateconvert(Stringarg0){
//yyyy-MM-dd
SimpleDateFormatsd=newSimpleDateFormat(pattern);
try{
returnsd.parse(arg0);
}catch(ParseExceptione){
//e.printStackTrace();
thrownewIllegalAccessError("日期转换出错!!");
}
}
}
需要在springMVC-servlet.xml配置文件中配置一下内容(springMVC-servlet文件具体的可以查看我的上一篇文章springMVC+springJDBC+Mysql注解模式)
<!--日期转换工厂-->
<beanid="conversionService"class="org.springframework.context.support.ConversionServiceFactoryBean">
<propertyname="converters">
<list>
<beanclass="com.converter.StringDate">
<constructor-argtype="java.lang.String"value="yyyy-MM-dd"></constructor-arg>
</bean>
</list>
</property>
</bean>
2.第二种方式Formatter转换器
packagecom.converter2;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Locale;
importorg.springframework.core.convert.converter.Converter;
importorg.springframework.format.Formatter;
/**
*日期类型转换器
*@authorAdministrator
*
*/
publicclassStringDate2implementsFormatter<Date>{
//日期转换格式
privateStringpattern;
privateSimpleDateFormatsd;
//构造函数
publicStringDate2(Stringpattern){
super();
this.pattern=pattern;
sd=newSimpleDateFormat(pattern);
}
@Override
publicStringprint(Dateobject,Localelocale){
//加上这句话就需要按照日期规范去转类似1999-15-15就会报错
sd.setLenient(false);
returnsd.format(object);
}
@Override
publicDateparse(Stringtext,Localelocale)throwsParseException{
sd.setLenient(false);
returnsd.parse(text);
}
}
需要在springMVC-servlet.xml配置文件中配置一下内容
<beanid="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<propertyname="formatters">
<list>
<beanclass="com.converter2.StringDate2">
<constructor-argtype="java.lang.String"value="yyyy-MM-dd"></constructor-arg>
</bean>
</list>
</property>
</bean>
以上方式只要在页面输入指定格式value="yyyy-MM-dd"的字符串然后发送请求并且将参数带到controller中spring就会自动转换为日期类型
本文内容总结:
原文链接:https://www.cnblogs.com/Faith-zhang/p/7656654.html