在做Web开发的时候,页面传入的都是String类型参数,SpringMVC可以对一些基本的类型进行转换,但是对于日期类型的转换可能就需要我们配置,大概有3中方式可以实现。
1、如果查询类是我们自己写,那么在属性前面加上@DateTimeFormat(pattern="yyyy-MM-dd"),即可将String转换为Date类型,如下:
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
2、如果我们只负责web层的开发,就需要在Controller中加入数据绑定:
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值
3、可以在系统中加入一个全局类型转换器
自定义转换器:
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String strDate) {
Date date = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (strDate != null && !strDate.equals("")) {
try {
date = simpleDateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
throw new BusinessException("日期格式参数绑定转换异常");
}
}
return date;
}
}
进行配置:
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.iie.common.DateConverter"/>
</set>
</property>
</bean>