目录
🍋🍊自定义的转换类
🍋🍊测试
SpringMVC 底层已经封装了很多的类型转换器,也就是为什么我们页面上传的字符串可以使用 Integer接收或者可以直接转换为数组的原因。 并不是所有类型的字符都可以正常转换,比如日期字符 "yyyy/mm/dd" 可以正常转换,而 "yyyy-mm-dd" 就不能转换。
针对特殊情况,我们使用自定义类型转换器进行处理
创建一个类实现converter<S,T>接口并重写 converter()方法。
注意converter接口所在包:import org.springframework.core.convert.converter.Converter;
自定义的转换类
java
package com.soft.component;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringtoDateConverter implements Converter<String,Date> {
public Date convert(String s) {
//非空判断
if(s == null || "".equals(s)){
return null;
}
//设置格式,解决传给后台的s字符串形如:xxxx-xx-xx,我们处理成xxxx/xx/xx
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
String str = s.replaceAll("-", "/");
Date date = null;
try {
date = simpleDateFormat.parse(str);
} catch (ParseException e) {
throw new RuntimeException(e);
}
return date;
}
}
泛性中的类型,第一个为接收来的数据的类型,第二个为要转换为的类型
比如:现在我们要将接受来的字符串类型数据,处理转换为Date类型,所以写为 Converter<String,Date>
xml文件中添加配置
html
<!-- 类型转换器服务工厂 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<!--把自定义类型转换器注册到服务中-->
<bean class="com.soft.converter.StringToDateConverter"/>
</set>
</property>
</bean>