- 自定义类型转换
ConversionService组件:负责数据类型的转换以及格式化功能;
ConversionService有非常多的converter
不同类型的转换和格式化用它自己的converter
步骤:
ConversionService:是一个接口;
它里面有converter(转换器)工作
1)实现Converter接口,写一个自定义的类型转换器;
2)Converter是ConversionService中的组件:
你的Converter要放进ConversionService中;
将webDataBinder中的ConversionService设置成我们这个加了自定义类型转换器的ConversionService;
3)配置出ConversionService;
<!-- 告诉SpringMVC别用默认的ConversionService而用自定义的 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- converters转换器中添加我们自定义的类型转换器 -->
<property name="converters">
<set>
<bean class="com.lyj.component.MyStringToEmployeeConverter"></bean>
</set>
</property>
</bean>
<!-- 指定我们自己配置的类型转换组件 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
总结三步:
1)实现Converter接口,做一个自定义类型的转换器
2)将zhegeConverter配置在ConversionService中
3)告诉SpringMVC使用这个ConversionService
mvc:annotation-driven</mvc:annotation-driven>
SpringMVC解析mvc:annotation-driven标签
只要请求不好使了就召唤mvc:annotation-driven
<mvc:annotation-driven><mvc:annotation-driven>
<mvc:default-servlet-handler />
现象:都没配?动态资源(@RequestMapping映射的资源能访问,静态资源如.hmtl.js.img不能访问)
<mvc:default-servlet-handler />
静态资源可以访问,当时动态的又不能访问了
只加<mvc:annotation-driven><mvc:annotation-driven>
也不行
<mvc:annotation-driven><mvc:annotation-driven><mvc:default-servlet-handler />
都加上后才能正常访问
格式化
格式不正确提示400;
日期格式:2019/11/16
ConversionServiceFactoryBean:创建的ConversionService组件时没有格式化器存在的
<!-- 以后写自定义类型转换器的时候,就使用FormattingConversionServiceFactoryBean来注册
既具有类型转换又有格式化功能
-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
在初始化属性时添加注解:
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birth;
数字格式化:
//工资格式:¥10,000.98
@NumberFormat(pattern="#,###,###.##")
private Double sallary;