zoukankan      html  css  js  c++  java
  • Spring MVC 数据返回问题记录

    Spring MVC 数据返回问题记录

    1. 返回值解析异常——“No converter found…”

    • 异常信息:

      Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class com.example.demo.entity.Student]

    • 过程回顾:

      有一Student类,代码如下:

      /**
       * @author xzy
       * @date 2020-08-16 16:02
       * 说明:
       */
      public class Student {
          private String id;
          private String studentName;
          private String studentNo;
      
          public Student() {
          }
      
          public Student(String id, String studentName, String studentNo) {
              this.id = id;
              this.studentName = studentName;
              this.studentNo = studentNo;
          }
      }
      

      Controller类相关代码如下:

          @GetMapping("getStudent")
          public Student getStudent() {
              return new Student("sd8f9sd89f", "李白", "A10001");
          }
      
    • 问题分析:

      将某一对象作为返回值是,框架需要调用对象中的 get 方法,将对象解析成JSON格式。由于上述代码中的student类没有定义任何 get 方法,因此数据解析失败。

    • 解决办法:

      为相关字段添加get方法

      修改后的student类:

      /**
       * @author xzy
       * @date 2020-08-16 16:02
       * 说明:
       */
      public class Student {
          private String id;
          private String studentName;
          private String studentNo;
      
          public String getId() { return id;}
      
          public String getStudentName() { return studentName;}
      
          public String getStudentNo() { return studentNo;}
          
          public Student() {}
      
          public Student(String id, String studentName, String studentNo) {
              this.id = id;
              this.studentName = studentName;
              this.studentNo = studentNo;
          }
      }
      

      调用接口,接收到的数据如下:

      {
          "id": "sd8f9sd89f",
          "studentName": "李白",
          "studentNo": "A10001"
      }
      

    2. 返回值解析异常——字段缺失

    • 问题重现

      修改上文的Student类,源码如下:

      public class Student {
          private String id;
          private String studentName;
          private String studentNo;
      
          public String getId() { return id;}
      
          public String getStudentName() { return studentName;}
          
          // 注意:此处没有为studentNo属性设置对应的get方法
          
          public Student() {}
      
          public Student(String id, String studentName, String studentNo) {
              this.id = id;
              this.studentName = studentName;
              this.studentNo = studentNo;
          }
      }
      

      调用接口,接收到的数据如下:

      {
          "id": "sd8f9sd89f",
          "studentName": "李白"
      }
      

      从接收到的数据看,studentNo属性的值并没有被后端发送出来。

    • 问题分析:

      将某一对象作为返回值是,框架会逐个调用对象中的 get 方法,将对象解析成JSON格式。由于上述代码的student类中没有为studentNo属性设置对应的get方法,因此,框架没有将studentNo属性的值解析到返回值中。

    • 解决办法:

      为需要的字段添加get方法。

  • 相关阅读:
    十,文献研读
    第十周博客作业
    【西北师大-2108Java】第八次作业成绩汇总
    【西北师大-2108Java】期中成绩汇总
    人脸识别性别的卷积神经网络
    主成分分析(PCA)原理详解
    使用KNN算法对鸢尾花数据集进行分类处理
    5.文献研读---基于教育数据挖掘的在线学习者 学业成绩预测建模研究--陈子健 朱晓亮
    4.文献研读---基于数据挖掘的学习者在线学习行为分析模型构建--卓荣庆 柏忠贤
    3.文献研读---基于Canvas Network开放数据集的MOOC学习分析--胡红梅 宗 阳
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/13513060.html
Copyright © 2011-2022 走看看