从Spring MVC @RestController返回视图
由于@RestController
是@Controller
和@ResponseBody
组合,我相信如果我想让我的控制器工作,因为只需用@RestController
注释MVC和REST控制器应该没问题。 那是对的吗?
由于@RestController
是@Controller
和@ResponseBody,
组合@ResponseBody,
我认为它在内部意味着它对
- 接收http请求(因为
@Controller
) - 以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,而是将域对象转换为消费者理解的格式。