Java解决LocalDateTime传输前端为时间的数组
作者:五敷有你
本文主要介绍了Java解决LocalDateTime传输前端为时间的数组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
问题出现如下:
问题出现原因:
默认序列化情况下会使用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。使用这个解析时就会打印出数组。
解决方法:
我在全文搜索处理方法总结如下:
1.前端自定义函数来书写
,cols: [[ //表头 {type: 'checkbox', fixed: 'left'} ,{field: 'purchaseId', title: 'ID', sort: true, fixed: 'left',hide:true} ,{field: 'supplierName', title: '供应商名称',sort: true}//当field是直属属性时,可以不用temple去获取! ,{field: 'userName', title: '采购员', sort: true} ,{field: 'purchaseDate', title: '采购时间',sort: true,templet:function(resp){ return dateArrayTransfer(resp.purchaseDate,'yyyy-MM-dd HH:mm:ss'); }} ,{fixed:'right',title:'操作',toolbar:'#operatBtn'} function dateArrayTransfer(dateArray) { if(dateArray == null || dateArray == ''){ return ''; } var returnDate = dateArray[0]+"-"+ returnDoubleNum(dateArray[1])+"-"+ returnDoubleNum(dateArray[2])+" "+ returnDoubleNum(dateArray[3])+":"+ returnDoubleNum(dateArray[4])+":"+ returnDoubleNum(dateArray[5]); return returnDate; } //保证两位数 function returnDoubleNum(number) { return (Array(2).join(0) + number).slice(-2);//创建一个长度为2的数组,且默认用0填充;然后用传过来的数添加都右边,然后从右向左截取两位! }
2.后端处理:
两个方法
一、一劳永逸法:修改消息转换器
在WebMvcConfig配置类中扩展Spring Mvc的消息转换器,在此消息转换器中使用提供的对象转换器进行Java对象到json数据的转换():
写在下面这个配置类里,继承了WebMvcConfiguer
package com.aqiuo.config; import com.aqiuo.Interceptor.LoginInterceptor; import com.aqiuo.Interceptor.RefreshInterceptor; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.http.HttpOutputMessage; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.HttpMessageNotWritableException; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.io.IOException; import java.lang.reflect.Type; import java.util.List; /** * 配置访问拦截器 */ @Configuration public class MVCConfig implements WebMvcConfigurer { @Autowired StringRedisTemplate stringRedisTemplate; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor(stringRedisTemplate)).addPathPatterns("/class").addPathPatterns("/course").excludePathPatterns("/user/login").excludePathPatterns("/user/register"); registry.addInterceptor(new RefreshInterceptor(stringRedisTemplate)).addPathPatterns("/**"); } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = jackson2HttpMessageConverter.getObjectMapper(); // 不显示为null的字段 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); jackson2HttpMessageConverter.setObjectMapper(objectMapper); // 放到第一个 converters.add(0, jackson2HttpMessageConverter); } }
二、简单,增加注解
- 在定义LocalDateTime类型的属性上添加两行注解
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") // 表示返回时间类型 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // 表示接收时间类型 @ApiModelProperty(value = "注册时间") private LocalDateTime date;
二者都可以!!!
到此这篇关于Java解决LocalDateTime传输前端为时间的数组的文章就介绍到这了,更多相关Java LocalDateTime传输时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!