在SpringMVC中后端传递给前端时,日期类型默认是时间戳,需要进行转换。
最简单的方式是设置一个全局日期转换器。
网上方法一使用conversion-service配置方法,但调试时发现无效,具体原因问题还需后续确认。后来用方法二解决了。
方法一:conversion-service配置方法
1.添加全局类型转换器DateConverter.java
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Describle Spring3.1之后全局日期转换方式
*/
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//设置不会对日期进行计算
simpleDateFormat.setLenient(false);
try {
return simpleDateFormat.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
2.在springmvc的xml添加配置节点
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!--配置自定义日期转换器,并且在mvc:annotation-driven 标签中加上conversion-service属性-->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.*.utils.DateConverter"></bean>
</list>
</property>
</bean>
方法二:更简单,直接在springmvc的xml添加配置节点
<mvc:annotation-driven>
<!-- 处理responseBody 里面日期类型 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
方法一无法生效的情况下使用方法二解决了问题。