天天看点

踩坑之@ResponseBody

今天有一个layer.opne弹出层的需求,如图

踩坑之@ResponseBody

点击总积分跳转页面至积分明细

本来是个很简单的需求嘛,直接上手就做,先创建了个toscore.html的页面,

在总积分出加了一个onclick方法用于跳转

踩坑之@ResponseBody

controller复制了一个上面export的代码用于跳转到静态文件,

踩坑之@ResponseBody

充满自信,启动!

显示了个页面,上面写着: <code>srg/score/toscore</code>,

啥情况,打印了下前端console,没啥问题啊,layer.open正常接收值了呀,正在一筹莫展之际,突然瞥见了

@responsebody,恍然大悟!

@responsebody的作用其实是将java对象转为json格式的数据。

@responsebody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回json数据或者是xml数据。

注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

@responsebody是作用在方法上的,@responsebody 表示该方法的返回结果直接写入 http response body 中,一般在异步获取数据时使用【也就是ajax】。

注意:在使用 @requestmapping后,返回值通常解析为跳转路径,但是加上 @responsebody 后返回结果不会被解析为跳转路径,而是直接写入 http response body 中。 比如异步获取 json 数据,加上 @responsebody 后,会直接返回 json 数据。@requestbody 将 http 请求正文插入方法中,使用适合的 httpmessageconverter 将请求体写入某个对象。

@requestmapping会走视图解析器,@responsebody不会走视图解析,直接返回response对象的body

随机删除@responsebody,问题解决!

踩坑之@ResponseBody