您的位置:首页 > 编程语言 > Java开发

Ext与spring mvc集成时间格式问题处理

2014-06-26 17:11 393 查看
最近刚接触Ext,以json形式请求后台服务时,时间类型也被转为字符串,导致不能直接存储到数据库

这里利用spring mvc的Formatter接口进行统一格式转化

代码如下:
public class DateFormatter implements Formatter<Date> {

@Override
public String print(Date date, Locale locale) {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
if (date == null) {
return "";
}
return dateformat.format(date);
}

@Override
public Date parse(String dateStr, Locale locale) throws ParseException {
SimpleDateFormat dateformat;
if (Locale.CHINA.equals(locale)) {   //TODO 正则截取出数字
dateformat = new SimpleDateFormat("yyyy-MM-dd");
} else {
dateformat = new SimpleDateFormat("");
}
return dateformat.parse(dateStr);
}

}


然后在spring mvc配置文件中加上

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<list>
<bean class="com.star.osgi.format.support.DateFormatter"/>
</list>
</property>
</bean>


个人认为Formatter接口也能处理返回数据转化,即print方法所做的事情,但是不知道为什么一直没有走到那个方法,所以只能单独对返回数据进行处理

重写了spring mvc的jacksonMessageConverter,其中有个objectMapper是spring mvc返回处理结果进行Json转化是调用的,可以通过设置objectMapper的一个属性改变它默认时间格式(默认是时间戳)

还有一种方法是直接利用jackson-all的json序列化注解,代码如下

public class DatePrinter extends JsonSerializer<Date> {

@Override
public void serialize(Date value, JsonGenerator generator,
SerializerProvider provider) throws IOException,
JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
generator.writeString(formattedDate);
}
}


在bean实体类的get方法上加上@JsonSerialize(using=DatePrinter.class)即可

水平有限,如果哪位有更好的方法或建议,欢迎指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: