我有以下控制器。@Controllerpublic class AppController { @RequestMapping("/home") @ResponseBody public User home() { User u = new User(); u.setUserId(10); u.setUserName("Rahul"); return u; }}當(dāng)我注釋掉注釋 @ResponseBody 時,調(diào)用 /home url 時出現(xiàn)錯誤。為什么?留言如下javax.servlet.ServletException:循環(huán)視圖路徑 [home]:將再次分派回當(dāng)前處理程序 URL [/home]。檢查您的 ViewResolver 設(shè)置!(提示:由于默認(rèn)視圖名稱生成,這可能是未指定視圖的結(jié)果。)在 org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:209) ~[spring-webmvc-5.1. 4.RELEASE.jar:5.1.4.RELEASE] 在 org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:147) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4 .RELEASE] 在 org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4.RELEASE] 在 org.springframework.web .servlet.DispatcherServlet.render(DispatcherServlet.java:1370) ~[spring-webmvc-5.1.4.RELEASE.jar:5.1.4。但是當(dāng)我將我的控制器方法更改為下面時,我沒有收到任何錯誤:- 為什么? @RequestMapping("/home")//@ResponseBody // commented public ResponseEntity<User> home(){ User u = new User(); u.setUserId(10); u.setUserName("Raj"); return ResponseEntity.ok(u); }
1 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊
如果沒有@ResponseBody 或 ResponseEntity,@Controller 將無法獨立工作
ResponseEntity 類似于 @ResponseBody 但具有狀態(tài)和標(biāo)頭。
為什么我們需要 @ResponseBody ?
因為,如果您的任何請求映射方法(如 home())包含 @ResponseBody 注釋,它會指示方法返回值應(yīng)綁定到 Web 響應(yīng)主體,如果我們不提及 @ResponseBody,則返回的對象將被視為 View 之一,ViewResolver 將開始在應(yīng)用程序中尋找相應(yīng)的視圖。
添加回答
舉報
0/150
提交
取消