不管是添加还是修改日期,当我们点击提交按钮时,发现报400错误,如下:
如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容。所以要真正解决这个需求,就必然要用到自定义参数绑定的内容。由于日期数据有很多种格式,所以SpringMVC没办法把字符串转换成日期类型。所以需要自定义参数绑定。前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。在SpringMVC中可以在处理器适配器上自定义Converter进行参数绑定。如果使用<mvc:annotation-driven/>
,可以在此标签上进行扩展;
自定义Converter——StringToDateConverter.java,如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
/**
* Converter<S, T> S:source源数据类型,T:target目标数据类型
*/
public class StringToDateConverter implements Converter<String, Date> {
public Date convert(String arg0) {
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(arg0);
return date;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
}
在SpringMVC配置文件中配置如下:
<!-- 配置一个注解驱动,如果配置此标签,那么就可以不用配置处理器映射器和处理器适配器 -->
<mvc:annotation-driven conversion-service="conversionServiceFactory" />
<!-- 转换器的配置 -->
<bean id="conversionServiceFactory"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.hlx.util.StringToDateConverter" />
</set>
</property>
</bean>