springMVC 非常的灵活,它帮我们内置了转换器,比如我们从页面传到后台参数的都是String 类型的,但是我们可以这样接受:
@PathVariable("Id") Integer id
这说明了在内部帮我们转换了,那么我们也可以自定义转换器。
前台页面:比如我们传递:张三-男-13432543@-12000-java工程师-1001
这样的数据到后台
<h2>自定义装换器</h2><form action="" method="post">employee:<input type="text" name="employee" /><input type="submit" value="提交" /></form>
首先新建一个类:
@Componentpublic class EmpConverter implements Converter<String,Employee>{@Overridepublic 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 中的 方法进行保存。