程序员社区

【SpringMvc学习及总结13】自定义类型转换器

问题提出

接上个博客中的CRUD

现在写一个表单,将员工的信息都提交:value="empAdmin-admin@qq.com-1-101"

<form action="${ctp}/quickadd">
   <!--将员工的所有信息都写上-->
   <input name="empinfo" value="empAdmin-admin@qq.com-1-101"/>
   <input type="submit" value="快速添加"/>
</form>
@RequestMapping(value="/quickadd")
public String quickAdd(@RequestParam("empinfo") Employee employee){
    System.out.println(employee);
    return "redirect:/emps";
}

发送请求带的数据是:quickadd?empinfo=empAdmin-admin@qq.com-1-101
@RequestParam("empinfo") Employee employee就相当于:
Employee employee = request.getParameter("empinfo")
也就是说将提交的参数的值empAdmin-admin@qq.com-1-101赋值给employee对象
但是这是一个字符串,明显不行,怎么办呢?我们人可以使用自定义类型转换器

自定义类型装换器

ConversionService:负责类型装换以及格式化功能
ConversionService中有非常多的Converter,不同类型的转换和格式化用他自己的Converter。

自定义类型转换器的步骤:
1.实现Converter接口,写一个自定义类型转换器:

public class StringToEmployeeConverter implements Converter<String, Employee> {

    @Autowired
    DepartmentDao departmentDao;

    //empAdmin-admin@qq.com-1-101
    public Employee convert(String source) {
        System.out.println("页面提交的字符串:"+source);

        Employee employee = new Employee();
        if(source.contains("-")){
            String[] split = source.split("-");
            employee.setLastName(split[0]);
            employee.setEmail(split[1]);
            employee.setGender(Integer.parseInt(split[2]));
            employee.setDepartment(departmentDao.getDepartment(Integer.parseInt(split[3])));
        }
        return employee;
    }
}

2.将WebDataBinder中的ConversionService设置成我们这个加了自定义类型转换器的ConversionService。

<!--
自定义的ConversionService中含有Converter
-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
   <!--converters转换器添加我们自定义的类型转换器-->
   <property name="converters">
       <set>
           <bean class="com.hh.component.StringToEmployeeConverter"/>
       </set>
   </property>
</bean>

3.告诉SpringMvc使用我们的ConversionService

<!--
告诉SpringMvc不用默认的ConversionService,用我们自定义的ConversionService
conversion-service="conversionServiceFactoryBean":使用我们自己配合的类型转化组件
-->
<mvc:annotation-driven conversion-service="conversionService"/>

在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【SpringMvc学习及总结13】自定义类型转换器

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区