天天看點

踩坑之@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