在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> {@Overridepublic 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>
方法一无法生效的情况下使用方法二解决了问题。