由于@RestController
是@Controller
和@ResponseBody
的组成部分,因此我相信我是否希望我的 Controller 同时工作
仅用@RestController
注释的MVC和REST Controller 应该没问题。那是对的吗?
因为@RestController
是@Controller
和@ResponseBody,
的组合,所以我认为它在内部意味着对
@Controller
)@ResponseBody
),但是可以根据需要更改响应最佳答案
@RestController
并不用于返回要解析的 View 。它应该返回将被写入响应主体的数据,因此包含@ResponseBody
。当@ResponseBody
已经在类级别上注释时,您不能在单个处理程序方法上有选择地禁用@ResponseBody
。
您可以通过返回ModelAndView
来解决此问题,即使在@RestController
中也可以使用,但是您实际上不应该这样做:
@RequestMapping
public ModelAndView renderFooList() {
ModelAndView mav = new ModelAndView("foo/list");
mav.addObject("foos", fooService.getFoos());
return mav;
}
最好为返回 View 的普通处理程序创建单独的 Controller ,并为RESTful Material 创建REST Controller 。或者用简单的
@Controller
注释该类,然后将@ResponseBody
放在您实际需要的方法上。