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 中的 方法进行保存。