自定义的类型转换器大致需要3个步骤:
1.实现Converter接口,写一个自定义的类型转换器
2.Converter是ConversionService中的组件
1.Converter的放进ConversionService中
2.将WebDataBinder中的ConversionService设置成我们这个价了自定义类型的ConversionService
3.spring.xml配置
3.正式使用
一步步开始实现
1.先写一个实现了implements Converter<S,T>接口的转换器
/**
* S:source
* T:target
*/
public class MyStringToUserConverter implements Converter<String,User> {
@Override
public User convert(String s) {
User user = new User();
if (s.contains("-")){
String[] strings = s.split("-");
user.setId(Integer.valueOf(strings[0]));
user.setRegion(strings[1]);
user.setHave(strings[2]);
user.setValue(strings[3]);
}
return user;
}
}
2.在Spring.xml中进行配置,让SpringMVC知道去使用你创造的转换器
<!--conversion-service="conversionService":使用我们自己配置的类型转换组件-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--告诉SpringMVC别用默认的ConversionService
而用我自定义的ConversionService
,可能有我们自定义的Converter-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!--converters中添加自定义的类型转化器-->
<property name="converters">
<set>
<bean class="com.why.component.MyStringToUserConverter"></bean>
</set>
</property>
</bean>
或者
<mvc:annotation-driven conversion-service="conversionService">
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!--converters中添加自定义的类型转化器-->
<property name="converters">
<set>
<bean class="com.why.component.MyStringToUserConverter"></bean>
</set>
</property>
</bean>
</mvc:annotation-driven>
3.在把jsp请求和处理器语句写好
jsp
<form action="quickadd">
<input name="userinfo" value="7-111-11-1"/>
<input type="submit" value="快速添加"/>
</form>
@Controller
@RequestMapping("quickadd")
public String quickadd(@RequestParam("userinfo") User user){
System.out.println(user.toString());
return "redirect:/emps";
}
然后我们运行起来看看结果
这样一个简单的自定义类型转换器就完成了