在springmvc中是可以将对象作为参数直接从前台传递到后台的,但是在传递过程中,由于选择的json插件不同,对于时间的格式支持会出现差异,也就会导致@DateTimeFormat(pattern = "yyyy-MM-dd") 这种方式失去效用。下面展示一个简单的例子用来弥补这种问题。
package com.eshop.bargin.util;
import java.io.IOException;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.DeserializationContext;
import org.codehaus.jackson.map.JsonDeserializer;
/**
*
* Description: TODO json时间格式反序列化.
* date: 2016-9-29 上午11:12:03
* @author zqn
*/
public class CustomDateDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
String date=node.getTextValue();
Date fimDate=null;
try{
fimDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
}catch(ParseException e){
e.printStackTrace();
}
return fimDate;
}
}
//在实体类中添加的注解
@JsonDeserialize(using = CustomDateDeserializer.class)
public void setExpectReceiptTime(Date expectReceiptTime) {
this.expectReceiptTime = expectReceiptTime;
}
这种是最简单的方式,还可以根据自己的要求做一些扩展。