Ajax请求返回Json数据,前端报500错误,后台没有错误日志,一切正常返回数据。 您所在的位置:网站首页 服务器返回数据格式错误怎么回事 Ajax请求返回Json数据,前端报500错误,后台没有错误日志,一切正常返回数据。

Ajax请求返回Json数据,前端报500错误,后台没有错误日志,一切正常返回数据。

2024-02-16 21:52| 来源: 网络整理| 查看: 265

出错信息:

1、前端报500错误,500服务器的错误,查看一下后台,没有报错。

2、打断点,也没有发现错误,但是请求返回空数据的时候,没有报错,返回有数据的结果报错了。

3、推测那应该是对象转Json的时候报错了,加入对象转Json代码到请求的最后查出错误原因。

ObjectMapper objectMapper = new ObjectMapper(); try { //output ,对象数据 objectMapper.writeValue(System.out,output); } catch (IOException e) { e.printStackTrace(); }

4、再次测试,果然发现报错了。ReportStatistics.getJobId()实体转Json的时候空指针。

Caused by: java.lang.NullPointerException     at com.audaque.datadiscovery.report.entity.ReportStatistics.getJobId(ReportStatistics.java:127)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:606)     at org.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:483)     at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:418)     at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)     ... 59 more

 

5.查看代码,getJobId的返回类型是int,查询出的JobId是Null值,NUll不能转为int,应该是将返回的返回类型改为Integer。实体类应该使用包装类型,原因Java Bean 使用包装类型 还是基本类型,我修改成包装类型后,没有重新生成get,set方法。

private Integer jobId; public int getJobId() { return jobId; }

转自:https://www.cnblogs.com/alway-july/p/9871439.html

6.解决方法, 修改get,set方法的返回值,形参列表, 修改成包装类型即可正常输出数据返回前端。 

private Integer jobId; public Integer getJobId() { return jobId; }

 

找了一下午BUG , 刚发现这种情况的时候,推测是转换json出现问题, 但是方向一直往注解@ResponseBody上面找错误,可是一直没有错误信息显示, 断点也都显示一切正常, 只好往前端ajxs上找问题,一直无法解决,刚好在网上找到一篇文字,发现可能为Java Bean 中某个参数的get,set方法为基本数据类型,导致返回前端数据转换json失败,报500报错,按照上述方法测试了后,果然发现了有一个基础类型出错,修改后正常显示,还是太马虎了, 没有检查javcBen 特此保存留心。

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有