当前台传来的数据 对时间类型的数据其实是无法绑定的,
解决办法1 :
@DataTimeFormat(pattern="yyyy-MM-dd")标注在实体类的时间字段上
解释: 这个注解的支持是来自<mvc:annotion-driven> ,因为默认情况下回去创建DefaultAnnotationHandlerMapping 和
AnnotationMethodHandlerAdapter 还会注册一个ConversionService实例FormattingConversionServiceFactoryBean,就是来自这个ConversionService 接口,方法入参前转化和格式化的工作就是这个接口来做的,
所以解决办法2是:
自定义一个转换器
在org.springframework.core.convert.converter包里面定义了最简单的接口
作用是将一种类型的转化成另一种类型
举个栗子!
public class StringToDataConverter implements Converter<String,Data>{
private String pattern;
public StringToDataConverter(String pattern){
this.pattern = pattern;
}
//重点来了,主要是实现这个方法
public Data convert(String str){
Data data = null;
data = new SimpleDataFormat(pattern).parse(str)
}
return data;
}
最后配置进去
<mvc:annotation-driven converter-service="myConverterService">
<bean id ="myConverterService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="StringToData">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd">
</bean>
</list>
</prpperty>
</bean>
解决办法3:
就是自定义一个编辑器,注意上边的是自定义一个转换器解决日期绑定的问题,而本方法是通过自定义编辑器
所以编辑器在springMVC中也是解决了 数据的转化和格式化
使用的是@InitBinder 注解,此方法不做介绍,。。。。