springMVC学习笔记(自定义转换器)

springMVC 非常的灵活,它帮我们内置了转换器,比如我们从页面传到后台参数的都是String 类型的,但是我们可以这样接受:

@PathVariable("Id") Integer id

这说明了在内部帮我们转换了,那么我们也可以自定义转换器。
前台页面:比如我们传递:张三-男[email protected]工程师-1001
这样的数据到后台

<h2>自定义装换器</h2>
    <form action="" method="post">
        employee:<input type="text" name="employee" />
        <input type="submit" value="提交" />
    </form>

首先新建一个类:

@Component
public class EmpConverter implements Converter<String,Employee>{

    @Override
    public Employee convert(String source) {
        System.out.println(source);
        String[] emp = source.split("-");
        if(emp != null && emp.length==6) {
            String empName = emp[0];
            String gender = emp[1];
            String email = emp[2];
            BigDecimal salary = new BigDecimal(emp[3]);
            String jobTitle = emp[4];
            Integer deptId = Integer.parseInt(emp[5]);
            Employee employee = new Employee( empName, gender, email, salary, jobTitle, deptId);
            return employee;
        }  
        return null;
    }


}

然后再springmvc.xml文件中配置如下:

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

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

这样就可以在控制类中写一个方法

//自定义转换器
    public String converter(@RequestParam("employee") Employee  employee) {
        System.out.println(employee);
        employeeService.add(employee); //增
        return "list";
    }

处理的流程: 页面传递指定格式的数据,进入转换类处理然后封装成employee对象返回传递到控制类方法中调用service 中的 方法进行保存。

猜你喜欢

转载自blog.csdn.net/weixin_38008100/article/details/82425843