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

当我们在后台获取页面上的数据的时候,它们之间的数据类型可能不是一致的,这时候就要用到自定义类型转换器。在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>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值