虽然springMVC中自带类型转换器,但是有的时候我们需要自己去定义类型转换器来解决特殊的事情,比如一个jsp页面中的字符串转为一个Student类
话不多说,上代码:
首先新建一个学生类Student,里面有三个属性id、name、age
package com.lin;
public class Student {
private Integer id;
private String name;
private Integer age;
//省略set和get方法
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
然后就开始编写类型转换器
编写一个类MyConverter,此类需要继承Converter类
package com.lin;
//注意:是org.springframework.core.convert.converter包下的
import org.springframework.core.convert.converter.Converter;
//Converter
public class MyConverter implements Converter
//重写父类方法
@Override
public Student convert(String arg0) {
//接受的String类型的数据为id-name-age,对应着Student类中的参数,-为分割符
String[] str = arg0.split("-");
int id = Integer.parseInt(str[0]);
String name = str[1];
int age = Integer.parseInt(str[2]);
Student stu = new Student();
stu.setId(id);
stu.setName(name);
stu.setAge(age);
return stu;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
在springMVC配置页面中配置
1、将编写好的MyConverter类添加到springloc容器
1
2、将MyConverter再添加到ConversionServiceFactoryBean工厂中(注意:converters字段是个set集合,需要spring知识)
1
完整的就是
1
2
3
4
5
6
7
8
9
编写好转换器后就可以开始测试了
新建一个one.jsp文件
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
@RequestMapping(“mv12”)
public String mv12(@RequestParam(“person”) Student stu) {
System.out.println(stu);
//这里返回的页面不管它 我们直接输出上面的那个对象就可以了
return “ok”;
}