在使用SpringMVC的项目中经常遇到 controller 参数中接收Date类型的数据,但是页面传过来的参数又是日期字符串,会出现转换异常。
由于项目需要支持两种日期格式所以从写了一个日期转换器。网友可以根据自己需要实现内部的内容。
package com.its.mmo;
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
/**
* 日期格式话工具
* SPRINGMVC日期字符换转换Date
* @author ALLEN
*/
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 {
if(StringUtils.isNotBlank(text)){
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);
}
}
然后在controller 中添加@InitBinder
/**
* 初始化日期格式
*
* @param request
* @param binder
* @throws Exception
*/
@InitBinder
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(Date.class, new DateEditor());
}