您的位置:首页 > 编程语言 > Java开发

SpringMVC中自定义类型转换器

2016-08-31 00:00 323 查看
摘要: SpringMVC中自定义类型转换器

1.首先自己写一个类型转换器,实现org.springframework.core.convert.converter.Converter这个接口

@Component("studentConverter")
public class StudentConverter implements Converter<String, Student> {
@Override
public Student convert(String source) {
if (source == null || source.isEmpty()) {
return null;
}
String[] strings = source.split("-");
if (strings.length != 3) {
return null;
}
Student student = new Student();
student.setSid(Long.valueOf(strings[0]));
student.setName(strings[1]);
try {
student.setBirthday(DateUtils.parseDate(strings[2], "yyyy/MM/dd"));
} catch (ParseException e) {
student.setBirthday(null);
}
return student;
}
}

Student类如下:

public class Student implements Serializable {
private Long sid;
private String name;
private Date birthday;

public Long getSid() {
return sid;
}

public void setSid(Long sid) {
this.sid = sid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", name='" + name + '\'' +
", birthday=" + birthday +
'}';
}
}


2.配置SpringMVC配置文件:

<!--启动MVC注解扫描功能,如果需要使用自定义的类型转换器则需要配置conversion-service -->
<mvc:annotation-driven conversion-service = "conversionService" />
<!--注册自定义的类型转换器-->
<bean id = "conversionService" class = "org.springframework.context.support.ConversionServiceFactoryBean">
<property name = "converters">
<set>
<ref bean = "studentConverter" />
</set>
</property>
</bean>


3.测试代码如下:

@RequestMapping(value = "studentConverter")
public ModelAndView studentConterver(
@RequestParam("student")
Student student, ModelAndView modelAndView) {
System.out.println(student);
modelAndView.addObject("msg", "Conterver Successful!");
modelAndView.setViewName("success");
return modelAndView;
}

请求如下:
http://localhost:8080/SSMProjectMaven/hello/studentConverter.do?student=1-黄色-1994/09/03
测试结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: