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

Spring:统一结果私有属性造成的前端无法访问异常报错问题

用户未填写任何评价

1.问题复现

(1)看一段代码

controller:

import lombok.extern.slf4j.Slf4j;
import org.ljy.testdemo.common.Result;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RequestMapping("/test")
@RestController
public class TestController {@RequestMapping("/hello")public String hello() {int a = 10/0;return "hello";}@RequestMapping("/heihei")public Result heihei() {return Result.fail("只因你实在是太美~");}
}

common:

public class Result {private String message;private int code;public Result(String message,int code) {this.message = message;this.code = code;}public static Result fail(String message) {return new Result(message,1314);}}

exception:

import lombok.extern.slf4j.Slf4j;
import org.ljy.testdemo.common.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;@Slf4j
@ResponseBody
@RestControllerAdvice
public class ExceptionAdvice {@ExceptionHandlerpublic Result exception(Exception e) {log.error(e.getMessage(), e);return Result.fail(e.getMessage());}
}

通过postman进行访问:

访问第二个接口:

(2)问题的原因

由于Result中的属性被设置成了private,所以当以其作为返回结果时,前端无法直接访问Result中的属性,进而报错。作为后端开发人员,只需要知道这样会导致前端无法访问到就行了。

2.解决的方法

因为前端无法直接访问属性,所以我们要做的就是让前端可以访问到属性即可

(1)最推荐做法:加上@Data注解

@Data
public class Result {private String message;private int code;public Result(String message,int code) {this.message = message;this.code = code;}public static Result fail(String message) {return new Result(message,1314);}}

 

(2)提供get方法

public class Result {private String message;private int code;public Result(String message,int code) {this.message = message;this.code = code;}public static Result fail(String message) {return new Result(message,1314);}public int getCode() {return code;}public String getMessage() {return message;}
}

(3)不推荐:private改成public

public class Result {public String message;public int code;public Result(String message,int code) {this.message = message;this.code = code;}public static Result fail(String message) {return new Result(message,1314);}}
http://www.lryc.cn/news/443113.html

相关文章:

  • thinkphp 做分布式服务+读写分离+分库分表(分区)(后续接着写)
  • webpack的使用
  • MATLAB智能优化算法-学习笔记(3)——大规模邻域搜索算法求解旅行商问题【过程+代码】
  • 货币单位换算 - 华为OD统一考试(E卷)
  • 95、k8s之rancher可视化
  • 简单生活的快乐
  • 【JAVA开源】基于Vue和SpringBoot的在线文档管理系统
  • 大数据新视界 --大数据大厂之数据驱动决策:如何利用大数据提升企业竞争力
  • 【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系
  • 多层感知机paddle
  • linux-网络管理-网络服务管理 17 / 100
  • Docker上安装mysql
  • 【秋招笔试-支持在线评测】8.28华为秋招(已改编)-三语言题解
  • 基于python上门维修预约服务数据分析系统
  • React基础教程(10):React Hooks
  • JVM 调优篇9 调优案例6- cpu使用过载解决办法【超赞】
  • Spring8-事务
  • 在Python中,类是用于定义对象的蓝图或模板,而对象则是根据类创建的具体实例
  • 【小波去噪】【matlab】基于小波分析的一维信号滤波(对照组:中值滤波、均值滤波、高斯滤波)
  • CentOS 7官方源停服,配置本机光盘yum源
  • 2024年汉字小达人区级自由报名备考冲刺:2024官方模拟题练一练(续)
  • 实战Redis与MySQL双写一致性的缓存模式
  • KVM环境下制作ubuntu qcow2格式镜像
  • 基于SpringBoot+Vue的高校竞赛管理系统
  • PHP发邮件教程:配置SMTP服务器发送邮件?
  • SpringBootWeb增删改查入门案例
  • pytorch实现RNN网络
  • 智能工厂的软件设计 “程序program”表达式,即 接口模型的代理模式表达式
  • leetcode 难度【简单模式】标签【数据库】题型整理大全
  • 利士策分享,自我和解:通往赚钱与内心富足的和谐之道