我有以下控制器。@Controllerpublic class AppController { @RequestMapping("/home") @ResponseBody public User home() { User u = new User(); u.setUserId(10); u.setUserName("Rahul"); return u; }}當我注釋掉注釋 @ResponseBody 時,調用 /home url 時出現錯誤。為什么?留言如下javax.servlet.ServletException:循環視圖路徑 [home]:將再次分派回當前處理程序 URL [/home]。檢查您的 ViewResolver 設置?。ㄌ崾荆河捎谀J視圖名稱生成,這可能是未指定視圖的結果。)在 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。但是當我將我的控制器方法更改為下面時,我沒有收到任何錯誤:- 為什么? @RequestMapping("/home")//@ResponseBody // commented public ResponseEntity<User> home(){ User u = new User(); u.setUserId(10); u.setUserName("Raj"); return ResponseEntity.ok(u); }
1 回答

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