SpringMVC——自定义类型转换器

来源:互联网 发布:linux时间同步 编辑:程序博客网 时间:2024/06/06 01:07

springmvc将request对象以及目标方法的参数传给WebDataBinderFactory 实例,得到一个DataBinder。DataBinder调用 ConversionService组件来完成数据类型的转换,数据格式化。调用Validator组件对数据进行合法性校验,并最终生成数据绑定结果BindingData对象Spring MVC 抽取 BindingResult 中的入参对象和校验错误对象,将它们赋给处理方法的响应入参

自定义类型转换器

web层:

@RequestMapping("/testConversionServiceConverer")    public String testConverter(@RequestParam(value="employee") Employee employee){        System.out.println("save:"+employee);        employeeDao.save(employee);        return "redirect:emps";    }

jsp;

<form action="testConversionServiceConverer" method="POST">        <!-- lastname-email-gender-department.id 例如: GG-gg@atguigu.com-0-105 -->        Employee: <input type="text" name="employee"/>        <input type="submit" value="Submit"/>    </form>

springmvc如何将String转化为Employee对象

写一个自己的类型转换器

@Componentpublic class EmployeeConverter implements Converter<String, Employee>{    @Override    public Employee convert(String source) {        if (source!=null) {            String []vals = source.split("-");            if (vals!=null && vals.length==4) {                String lastName = vals[0];                String email = vals[1];                Integer gender = Integer.parseInt(vals[2]);                Department department = new Department();                department.setId(Integer.parseInt(vals[3]));                Employee employee = new Employee(null, lastName, email, gender, department);                return employee;            }        }        return null;    }}

在springmvc配置文件中配置

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>    <!-- 配置 ConversionService -->    <bean id="conversionService"        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">        <property name="converters">            <set>            <!-- 这里是我们自己定义的类型转换器 -->                <!-- 注意,这里首字母要小写,因为springmvc帮我们创建bean的时候,是以类名首字母小写命名 -->                <ref bean="employeeConverter"/>            </set>        </property>     </bean>