当前位置: 首页 > article >正文

Web开发-问题-前后端交互数据不一致

0x01 问题描述

  • 所用的技术:Vue+Spring Boot
  • 后端传给前端数据:
[Student(studentId=1, person=org.fatmansoft.teach.models.Person@4abe6020, major=软件工程, className=一班, grade=一年级), Student(studentId=2, person=org.fatmansoft.teach.models.Person@5207b9e6, major=软件工程, className=二班, grade=二年级)]
  • 前端接收数据:

在这里插入图片描述
前后端通讯数据明显不同,非常疑惑???(・∀・(・∀・(・∀・*)

0x02 解决

问题原因

export interface StudentItem {
  studentId: number;
  personId: number;
  num: string;
  name: string;
  dept: string;
  major: string;
  className: string;
  card: string;
  gender: string;
  genderName: string;
  birthday: string;
  email: string;
  phone: string;
  address: string;
  grade: string;
  url: string;
  introduce: string;
}
  • 前端的学生数据定义,和后端传的不一致,后端传的person是封装过的,所以前端获取不到person内的数据
  • 要想获取到数据,就要在后端将person里封装的数据给拿到Student下

解决方案

定义一个模板类StudentDto继承Student,将Student中没有的数据(此处是url和name),从person里拿到StudentDto里,然后返回一个StudentDto的list。

   public DataResponse getStudentListByMajor(@Valid @RequestBody DataRequest dataRequest){
        Optional<Student> student = studentRepository.findStudentByStudentId((Integer) dataRequest.get("studentId"));
        Student s = student.get();
        String major = s.getMajor();
        List<Student> list = studentRepository.findStudentListByMajor(major);
        List<StudentDto> collect = list.stream().map((item) -> {
            StudentDto dto = new StudentDto();
            BeanUtils.copyProperties(item, dto);
            dto.setName(item.getPerson().getName());
            dto.setUrl(item.getPerson().getUrl());
            return dto;
        }).collect(Collectors.toList());
        return CommonMethod.getReturnData(collect);
    }

http://www.kler.cn/a/158526.html

相关文章:

  • .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】
  • 【Swift】类型标注、类型安全和类型推断
  • 博客文章怎么设计分类与标签
  • 机器翻译-基础与模型
  • IDEA 开发工具常用快捷键有哪些?
  • 【会话文本nlp】对话文本解析库pyconverse使用教程版本报错、模型下载等问题解决超参数调试
  • 网工内推 | 上市公司初级网工,HCIP认证优先,14薪,享企业年金
  • 记录 | CUDA编程中 __host__ 标识符可以省略的情况
  • Excel如何比较两列数据的不同
  • 论文解读:《数据增强:通过强化学习引导的条件生成进行文本数据扩充》
  • esp32使用命令查看芯片flash大小以及PSRAM的大小
  • dcat admin日志扩展 dcat-log-viewer 遇到的问题记录
  • Navicat在分辨率不同的屏幕窗口显示大小不一致问题解决
  • ActiveMQ Jolokia 代码执行漏洞(CVE-2022-41678)复现
  • Spring——全局异常处理(介绍@RestControllerAdvice和@ExceptionHandler)
  • js实现AES加密解密,简易又全面
  • monaco报错#Unexpected usage at EditorSimpleWorker.loadForeignModule
  • WPF使用Prism框架批量注册Page,Window,UserControl等视图组件
  • 7天快速学习计算机基础必考八股文day02:操作系统
  • SOCKET、TCP、HTTP之间的区别与联系
  • 最新测试开发招聘信息汇总,内含社招和实习生岗位~
  • 如何有效预防内存泄漏?
  • 基于Python+OpenCV的车道线和车辆检测系统
  • 【c】16进制数转化为10进制数(计算方法在最后,大家也可以上网搜索视频,视频更详细,谢谢)
  • Flink入门之核心概念(三)
  • xcode opencv