Spring -- 自定义转换器
来源:互联网 发布:淘宝手机端网页制作 编辑:程序博客网 时间:2024/06/11 14:23
Spring 定义了 3 种类型的转换器接口,实现任意一个转换器接口都可以作为自定义转换器注册到 ConversionServiceFactoryBean 中:
Converter<S,T>:将 S 类型对象转为 T 类型对象;
ConverterFactory:将相同系列多个 “同质” Converter 封装在一起。如果希望将一种类型的对象转换为另一种类型及其子类的对象(例如将 String 转换为 Number 及 Number 子类(Integer、Long、Double 等)对象)可使用该转换器工厂类;
GenericConverter:会根据源类对象及目标类对象所在的宿主类中的上下文信息进行类型转换。
举个例子来实现下自定义转换器:
例如Employee对象,现在在页面提交的时候内容是“zhangsan,aaa@qq.com,1,101”,需要转化为Employee对象进行保存。
首先先看Employee对象:
public class Employee { private Integer id; private String lastName; private String email; private Integer gender; private Date birth; private Department department; }
“zhangsan”赋给lastName;
“aaa@qq.com”赋给email;
“1”给gender;
“101”给Department ;
再看下Department的结构:
public class Department { private Integer id; private String departmentName; }
上面的JavaBean省略了构造和get set细节,具体代码里面应该写上,博客里面就不累赘。
然后自定义转换器:
import org.springframework.core.convert.converter.Converter;import com.soyoungboy.bean.Department;import com.soyoungboy.bean.Employee;/** * string转Employee * @author MSI1 * */public class StringToEmployeeConverter implements Converter<String, Employee> { @Override public Employee convert(String str) { String strTrim = str.trim(); if (strTrim != null && !strTrim.equals("")) { String[] strs = strTrim.split(","); // zhangsan,aaa@qq.com,1,101,将字符串转化为字符串数组,然后通过构造函数拼装进指定属性 Employee employee = new Employee(null, strs[0], strs[1], Integer.parseInt(strs[2]), new Department(Integer.parseInt(strs[3]), "")); return employee; } return new Employee(); }}
配置文件里面配置:
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <bean class="com.atguigu.StringToEmployeeConverter"></bean> </property> </bean>
将自定义的转换器注册到Spring上下文中去。
jsp界面:
<form action="${ctp }/quickadd" method="post"> <!-- 员工的所有信息全部写上;用-分隔 zhangsan-aaa@qq.com-1-101 --> 员工信息:<input name="empInfo" value="zhangsan,aaa@qq.com,1,101" style="width: 300px;"/> <input type="submit" value="快速添加"/> </form>
测试代码:
@RequestMapping("/quickadd") public String quickAdd(@RequestParam("empInfo")Employee emp){ System.out.println(emp); employeeDao.save(emp); return "redirect:/emps"; }
阅读全文
0 0
- Spring -- 自定义转换器
- Spring自定义属性转换器
- Spring MVC 创建自定义转换器
- Spring mvc 自定义时间转换器
- Spring mvc 自定义时间转换器
- spring MVC自定义日期转换器
- Spring中的自定义类型转换器
- Spring MVC自定义类型转换器
- Spring自定义消息转换器替换ResponseBody
- Spring MVC__自定义日期类型转换器
- spring MVC (7) 定义自定义类型转换器
- spring 3.2 自定义参数绑定--日期格式转换器
- spring 3.2 自定义参数绑定--日期格式转换器
- spring 3.2 自定义参数绑定--日期格式转换器
- Spring MVC处理JSON数据(3)-自定义消息转换器
- Struts中的转换器:自定义转换器
- JSF转换器之自定义转换器
- spring boot框架学习7-spring boot的web开发(3)-自定义消息转换器
- 浏览器地址栏中输入一个URL后回车,将会发生什么事情
- mongodb自动启动windows服务配置
- ZOJ 1118 N-Credible Mazes(map+并查集)
- nginx配置优化
- Servlet、Filter、Listener、Interceptor
- Spring -- 自定义转换器
- jxl简单API
- HDU
- oracle 学习笔记
- HDU 3663 Power Stations DLX精确覆盖
- java中Action层、Service层和Dao层的功能区分
- HDU-Kolakoski
- Android数据解析JSON解析之FastJson解析
- hdoj 6152 Friend-Graph