使用场景
在index.jsp里面添加日期类型
<form action="account/saveAccount" method="post">
账户名称:<input type="text" name="name"><br/>
账户金额:<input type="text" name="money"><br/>
账户省份:<input type="text" name="address.provinceName"><br/>
账户城市:<input type="text" name="address.cityName"><br/>
开户日期:<input type="text" name="date"><br/>
<input type="submit" value="保存">
</form>
在pojo里面添加日期类型
public class Account implements Serializable {
private Integer id;
private String name;
private Float money;
private Address address;
//添加日期类型
private Date date;
//省略get set toString方法
}
测试
原因:我们前台传递的是字符串类型的参数,但是后台使用的是Date类型接收的。我们期望springmvc可以帮我们做数据类型的自动转换,显然没有做,所以我们需要自己自定义类型转换器。
解决方案:
定义一个类,实现Converter接口
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.parse(source);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
在 springmvc.xml配置文件中配置类型转换器
<!--开启springmvc注解支持-->
<mvc:annotation-driven conversion-service="cs"></mvc:annotation-driven>
<!-- 配置类型转换器工厂 -->
<bean id="cs"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- 给工厂注入一个新的类型转换器 -->
<property name="converters">
<set>
<!-- 配置自定义类型转换器 -->
<bean class="com.by.converter.DateConverter"></bean>
</set>
</property>
</bean>