案例需求:
按照如图所示固定格式输入日期和工资的属性值来创建对象:
案例实现:
1.
在Spring MVC配置文件中配置: <mvc:annotation-driven></mvc:annotation-driven>
2.
在员工实体类代码中增加@DateTimeFormat和@NumberFormat注解:
同时使用pattern规定指定的输入格式:
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
@NumberFormat(pattern="#,###,###.#")
private Float salary;
此外修改实现类(打印保存信息):
@RequestMapping(value = "/emp" ,method = RequestMethod.POST)
public String save(Employee employee,BindingResult result) {
System.out.println("save" + employee);
if(result.getErrorCount()>0) {
System.out.println("出错啦!");
for(FieldError error:result.getFieldErrors()) {
System.out.println(error.getField() +":"+ error.getDefaultMessage());
}
}
employeeDao.save(employee);
return "redirect:/emps";
}
结果:
同时打印出:
saveEmployee [id=null, lastName=zhang, email=22@qq.com, gender=1, department=Department [id=101, departmentName=null], birth=Sat Feb 13 00:00:00 CST 1999, salary=1.23123232E8]
案例原理:
!此处注意:
若想同时配置conversionService,可以通过org.springframework.format.support.FormattingConversionServiceFactoryBean配置:
<!--在实际开发中都需要配置mvc:annotation-driven标签 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--配置ConversionService -->
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="employeeConverter"/>
</set>
</property>
</bean>
此时既可以添加自定义的类型转换器<ref bean="employeeConverter"/>
也可以使用Spring MVC中自带的格式化工具;