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

本文介绍如何在SpringMVC中使用Formatter接口统一处理日期格式化问题,并提供两种方式来解决日期转换为字符串的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刚接触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)即可

水平有限,如果哪位有更好的方法或建议,欢迎指正


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值