情况1:
网上大多数情况都是说方法头顶没有添加@responseBody注释, 一般情况下有此可能
@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
情况2:
也就是我帮同事调BUG时最近遇到的一个怪异情况,从格式或者书写上并没有发现任何问题,tomcat清空重新编译部署问题依旧,这种情况下只能换种途径啦。
首先,将@ResponseBody去掉,将返回类型改为void,直接使用response.getWriter.write(JSONObject.fromObject(user).toString());然后这个时候异常就暴露了出来,是因为里边有一个oracle的时间戳类型无法进行转换;再往后边查看代码,发现mapper.xml中的返回类型是map类型的,里边的查询数据时间类型没有经过任何转换操作
问题解析:@ResponseBody自带的json转换无法将oracle的日期类型自动转换,导致数据无法返回,但是在这个数据封装的过程中是怎么进行的我并没有弄清楚,如果有同学能够详细解析一下再好不过啦
问题解决:1.数据库查询时将时间类型转换为字符串格式;2.对象转json时对日期类型进行特殊处理
网上大多数情况都是说方法头顶没有添加@responseBody注释, 一般情况下有此可能
@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
情况2:
也就是我帮同事调BUG时最近遇到的一个怪异情况,从格式或者书写上并没有发现任何问题,tomcat清空重新编译部署问题依旧,这种情况下只能换种途径啦。
首先,将@ResponseBody去掉,将返回类型改为void,直接使用response.getWriter.write(JSONObject.fromObject(user).toString());然后这个时候异常就暴露了出来,是因为里边有一个oracle的时间戳类型无法进行转换;再往后边查看代码,发现mapper.xml中的返回类型是map类型的,里边的查询数据时间类型没有经过任何转换操作
问题解析:@ResponseBody自带的json转换无法将oracle的日期类型自动转换,导致数据无法返回,但是在这个数据封装的过程中是怎么进行的我并没有弄清楚,如果有同学能够详细解析一下再好不过啦
问题解决:1.数据库查询时将时间类型转换为字符串格式;2.对象转json时对日期类型进行特殊处理