今天有一个layer.opne弹出层的需求,如图
点击总积分跳转页面至积分明细
本来是个很简单的需求嘛,直接上手就做,先创建了个toscore.html的页面,
在总积分出加了一个onclick方法用于跳转
controller复制了一个上面export的代码用于跳转到静态文件,
充满自信,启动!
显示了个页面,上面写着: <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,问题解决!