spring boot 以静态方法返回为空的原因
在 spring boot 应用程序中,使用控制器方法返回 commonresult 类型的对象时,返回结果可能出现为空的情况。这是由于 commonresult 中的 data 属性默认设置为私有访问。
为了解决这个问题,需要将 commonresult 中的 data 属性设置为公共访问权限,或者提供一个公共的 getter 方法来获取 data 值。
修改 commonresult 类
修改 commonresult 类如下:
public class commonresult<t> implements serializable { public static integer code_success = 0; private integer code; private string message; public t data; // data 的访问权限由 private 改为 public public integer getcode() { return code; } public string getmessage() { return message; } public static <k> commonresult<k> success(k input_data) { commonresult<k> result = new commonresult<>(); result.code = code_success; result.data = input_data; result.message = ""; return result; } }
修改控制器方法
修改控制器方法返回类型,使用 commonresult 的公共 data 字段:
@getmapping("/get2") public commonresult<uservo> get2(@requestparam("id") integer id) { uservo user = new uservo().setid(id).setusername(uuid.randomuuid().tostring()); // 返回结果 return commonresult.success(user).data; // 使用 commonresult 的公共 data 字段 }
通过这些修改,使用静态方法返回 commonresult 对象时即可正常返回 data 值:
{ "code": 0, "message": "", "data": { "id": 3, "username": "1e29a45d-6363-43b3-a08d-3989ea70d1ae" } }