转换器
为什么需要转换器
使用springmvc开发程序,如果界面上输入的内容和实体(controller 中)接收的数据类型不一样。那么会报出400的错误,并且在控制台没有错误提示的。
这中情况如何解决
1、首先需要在页面提交之前做输入合法性的验证。(所有的程序页面都需要)
2、在springmvc 中,date数据类型比较特殊的。需要我们手动的去转换一下数据类型
(原因:常用的日期格式和系统中默认的日期格式是不一样的。),那么需要在程序中去转换日期的数据类型。
转换日期数据类型的方式
1、在实体类的属性上加注解
public class ConTestPojo {
private string teststr;
//在这里添加注解
//pattern="yyyy-MI-dd":指明输入的日期的格式。(要求:输入格式必须是这样的)
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date testdate;
}
分析:优点:简单方便;缺点:每一个日期类型的数据都要去写注解
2、编写一个全局的数据类型转换器
1、定义一个类,这个类需要实现convert<E ,T>接口
//泛型参数:String-->转换之前的数据类型
//泛型参数: Date-->转换之后的数据类型
public class Conterver implements Converter<String,Date>{
}
2、实现接口的方法
public class Conterver implements Converter<String,Date>{
Date date = null;
@override
public Date convert( String str){
simpleDateFormat sdf =new simpleDateFormat( "yyyy-MM-dd" );
try {
date = sdf.parse(str);
}catch (Exception e){
e.printstackTrace();
}
return date;
}
}
3、在spring 的配置文件中配置类型转换器
<!--配置转换器-->
<mvc:annotation-driven conversion-service="myDate"/>
<!--注册转换器类-->
<bean id="myDate" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<!--在这里可以注册多个类型转换类-->
<bean class="com.zsn.mvc.common.Conterver"></bean>
</list>
</property>
</bean>