前言
SpringMVC有一个比较奇葩的问题,就是如果接受参数是日期(java.util.Date)类型或者参数是包含了(java.util.Date)得POJO将会导致无法进入Controller的方法。没想明白为什么spring作为那么成熟的框架没有兼容这个问题。好了,不废话了,下面讲一下解决办法
方法一:实体类中加日期格式化注解
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date receiveAppTime;
方法二:实现一个全局日期类型转换器并进行配置
编写步骤;
- 定义日期类型转换器,注意进行null值和空字符串的判断
- 在配置文件中注册bean:conversionService
package net.neuedu.springmvc.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.core.convert.converter.Converter;
public class DateTypeConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
Date target=null;
if(source==null||"".equals(source)) //判断日期是否为null和空串
{
return target;
}else
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//开发时确保前端得到的字符串是这个模式才行
try {
target=sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return target;
}
}
}
配置beans.xml文件注册刚刚写好的
<!-- 定义日期转换服务bean -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="net.neuedu.springmvc.converter.DateTypeConverter"/>
</list>
</property>
</bean>