前言:spring mvc 后台只接收String类型,所以需要对日期类型处理
解决方案:
第一种方案:注解。依赖开源的日期工具包,joda-time-2.1.jar。步骤如下:
1)在vo的日期型变量加注解:@DateTimeFormat(pattern = "yyyy-MM-dd")
2)导入joda-time-2.1.jar包。
3)配置<mvc:annotation-driven/>,自动生成Controller。
第二种方案:写通用的属性编辑器。参考http://www.w2bc.com/Article/19998。
第三种方案:在控制器里写属性编辑器。此种方法比较单一,不灵活,只适用于测试。将下面2个方法拷贝至Controller即可。
/** 时间属性编辑器**/
@InitBinder
public void initBuilder(ServletRequestDataBinder bin) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
CustomDateEditor cust = new CustomDateEditor(sdf, true);
bin.registerCustomEditor(Date.class, cust);
}
public class DateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String text) throws IllegalArgumentException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(text);
} catch (ParseException e) {
format = new SimpleDateFormat("yyyy-MM-dd");
try {
date = format.parse(text);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
setValue(date);
}
}