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>