解决LocalDateTime传输前端为时间的数组

news/2024/7/5 3:47:32

问题出现如下:

问题出现原因:

默认序列化情况下会使用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);

    }


}

二、简单,增加注解

  1. 在定义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;

二者都可以!!!


http://lihuaxi.xjx100.cn/news/1827179.html

相关文章

2311d,模板上的推导类型

原文 我正在试实现替代的基础库,来避免模板/mixin/static/traits代码,只为了:使得更容易解析"智能感知"代码. 我需要"泛型",但D没有泛型:我按"最简单"方式使用模板. 即: interface IIterable(T) {bool empty();void popFront();T front(); } II…

巧用ChatGPT快速提高职场晋升力、搞定数据分析玩、转新媒体运营

文章目录 一、引言二、ChatGPT在日常工作中的应用场景1. 客户服务与支持2. 内部沟通与协作3. 创新与问题解决 三、巧用ChatGPT提升工作效率1. 自动化工作流程2. 信息整合与共享3. 提高决策效率 四、巧用ChatGPT创造价值1. 优化产品和服务2. 提高员工满意度和留任率 五、总结与展…

企业数字化转型的作用是什么?_光点科技

在当今快速变化的商业环境中&#xff0c;数字化转型已成为企业发展的重要策略。企业数字化转型指的是利用数字技术改造传统业务模式和管理方式&#xff0c;以提升效率、增强竞争力和创造新的增长机会。 提升运营效率&#xff1a;数字化转型通过引入自动化工具和智能系统&#x…

JMeter测试报错422 Unprocessable Entity

添加HTTP信息头&#xff1a; ​ HTTP请求-》添加-〉配置元件-》HTTP信息头管理器 ​ 如果需要送json&#xff0c;需要添加Content-Type:application/json&#xff0c;否则会报【422 Unprocessable Entity】

从文本生成到数据增强:探索 AI 前沿的开源套件 | 开源专题 No.44

Significant-Gravitas/AutoGPT Stars: 150.4k License: MIT AutoGPT 是开源 AI 代理生态系统的核心工具包。它采用模块化和可扩展的框架&#xff0c;使您能够专注于以下方面&#xff1a; 构建 - 为惊人之作打下基础。测试 - 将您的代理调整到完美状态。查看 - 观察进展成果呈…

acwing算法基础之数学知识--求组合数基础版

目录 1 基础知识2 模板3 工程化 1 基础知识 &#xff08;一&#xff09; 组合数 C n k C_n^k Cnk​的计算公式&#xff0c; C n k n ! k ! ⋅ ( n − k ) ! C_n^k\frac{n!}{k!\cdot (n-k)!} Cnk​k!⋅(n−k)!n!​ 故可以这样计算&#xff0c; int compute_combination_n_k(…

千兆光模块和万兆光模块的发展趋势

千兆光模块和万兆光模块是一种高速光电子器件&#xff0c;以其高速传输、长距离传输和高可靠性而广受关注。光模块是光学通讯系统中极为重要的组成部分之一。不同类型的光模块由于其不同的特性&#xff0c;可以适用于不同的应用场景。下面我们将着重介绍千兆光模块和万兆光模块…

在.bashrc文件修改环境变量的做法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> ~/.bashrc文件是linux下保存环境变量的系统文件。原以为使用sed命令修改.bashrc文件&#xff0c;实际上不行&#xff0c;需要使用echo命令。具体示例如下…