簡體   English   中英

從Spring MVC @RestController返回視圖

[英]Returning view from Spring MVC @RestController

由於@RestController@Controller@ResponseBody組合,我相信如果我想讓我的控制器同時充當MVC和REST控制器,只需要使用@RestController進行注釋@RestController可以了。 那是對的嗎?

由於@RestController@Controller@ResponseBody,組合@ResponseBody,我認為它在內部意味着對

  1. 接收http請求(由於@Controller
  2. 以JSON格式發送響應(由於@ResponseBody ),但可以根據需要進行更改

@RestController不用於返回要解析的視圖。 它應該返回將被寫入響應主體的數據,因此包含@ResponseBody @ResponseBody已經在類級別上注釋時,您不能在單個處理程序方法上有選擇地禁用@ResponseBody

您可以通過返回ModelAndView來解決該問題,即使在@RestController ,但實際上不應該這樣做

@RequestMapping
public ModelAndView renderFooList() {
    ModelAndView mav = new ModelAndView("foo/list");
    mav.addObject("foos", fooService.getFoos());
    return mav;
}

最好為返回視圖的普通處理程序創建單獨的控制器,並為RESTful材質創建REST控制器。 或者用普通的@Controller注釋類,並將@ResponseBody放在實際需要的方法上。

@RestController批注,它將此類標記為控制器,其中每個方法均返回域對象/ pojo而不是視圖。 這意味着我們不再使用視圖解析器,不再直接發送html作為響應,而是發送域對象轉換為使用者可以理解的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM