JSP页面:
<form action="testConverter" method="post">
<!-- 输入:小明-123456-25 -->
<input type="text" name="user">
<input type="submit" value="自定义类型装换器">
</form>
后台Controller的方法
/**
* 自定义springmvc类型装换器
* @param user:实体类,这里用来接收jsp传过来的值。
* @return
*/
@RequestMapping("/testConverter")
public String testConverter(User user) {
System.out.println(user);
return "success";
}
springmvc自定义类型装换器的类:
package com.gl.converter;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import com.gl.model.User;
/**
* 自定义springmvc类型装换器
* @author Administrator
* 其中Converter<String, User>里面的String,是前端请求来的数据类型,User 是需要转换成的数据类型
* @Component:spring ioc注解
*/
@Component
public class EmployeeConverter implements Converter<String, User> {
@Override
public User convert(String source) {
if (null != source) {
//小明-123456-25
String[] vals = source.split("-");
if (vals != null && vals.length == 3) {
User user = new User();
user.setName(vals[0]);
user.setPassword(vals[1]);
user.setAge(Integer.parseInt(vals[2]));
System.out.println("类型转换成功,user:" + user);
return user;
}
}
return null;
}
}
Spring MVC的配置文件中加入:
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 把SpringMVC自定义的类型装换器加入到SpringMVC自带的类型装换器的体系中 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="employeeConverter"/><!-- 自定义类型转换器的类名。首字母小写 -->
</set>
</property>
</bean>