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

spring MVC (7) 定义自定义类型转换器

2017-08-30 15:54 309 查看
当我们在后台获取页面上的数据的时候,它们之间的数据类型可能不是一致的,这时候就要用到自定义类型转换器。在spring MVC中有自己的类型转换器,但同时,我们也可以根据需求定义自己的类型转换器。

我们知道的是ConversionService 是 Spring 类型转换体系的核心接口。可以利用 ConversionServiceFactoryBean 在 Spring 的 IOC 容器中定义一个 ConversionService. Spring 将自动识别出IOC 容器中的 ConversionService,并在 Bean 属性配置及Spring MVC 处理方法入参绑定等场合使用它进行数据的转换。可通过 ConversionServiceFactoryBean 的 converters 属性注册自定义的类型转换器

首先,定义一个自定义类型转换器类(以将String类型转换为employee对象为例)

converter类:

package com.tanla.springmvc.converterTest;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import com.tanla.springmvc.crud.entities.Department;
import com.tanla.springmvc.crud.entities.Employee;

/**
* @author
* @date 2017年8月30日上午10:41:54
* @version 1.0
* 自定义转换类:实现将页面上的String类型装换为Employee类型
*/
@Component
public class EmployeeConverter implements Converter<String, Employee>{

@Override
public Employee convert(String source) {
// TODO Auto-generated method stub
if(source != null) {

String [] values = source.split("-");
if(values != null && values.length != 0) {
Employee employee = new Employee();
employee.setLastName(values[0]);
employee.setEmail(values[1]);
employee.setGender(Integer.parseInt(values[2]));
Department department = new Department();
department.setId(Integer.parseInt(values[3]));

employee.setDepartment(department);

return employee;
}

}
return null;
}

}


jsp页面:

<form action="converterTest" method="post">
<!-- lastname-email-gender-department.id -->
<input type="text" name="employee">
<input type="submit" value="submit">

</form>


handler类:

package com.tanla.springmvc.converterTest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.tanla.springmvc.crud.dao.EmployeeDao;
import com.tanla.springmvc.crud.entities.Employee;

/**
* @author tanla
* @date 2017年8月30日上午10:56:18
* @version 1.0
*/
@Controller
public class ConverterTest {

@Autowired
private EmployeeDao employeeDao;

@RequestMapping("converterTest")
public String converter(@RequestParam("employee") Employee employee) {
employeeDao.save(employee);

return "redirect:/emps";
}
}


同时,在Spring.xml的配置文件中添加

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="employeeConverter"/>
</set>
</property>

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