从Spring MVC @RestController返回视图

M S*_*ach 9 java spring-mvc

由于@RestController是组成@Controller@ResponseBody,我相信如果我想我的控制器既MVC劳逸结合控制器只是标注@RestController应该罚款.那是对的吗?

由于@RestController是组成@Controller@ResponseBody,我认为它在内部表示,这是很好的

  1. 收到http请求(因为@Controller)
  2. 以JSON格式发送响应(因为@ResponseBody)虽然可以根据需要进行更改

Boh*_*rdt 18

@RestController并不意味着用于返回要解决的视图.它应该返回将被写入响应主体的数据,因此包含@ResponseBody.@ResponseBody@ResponseBody类级别已经是注释时,您无法有选择地禁用各个处理程序方法.

你可以通过返回来解决它ModelAndView,它甚至可以工作@RestController,但你真的不应该:

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

最好为正常处理程序创建单独的控制器,为RESTful东西返回视图和REST控制器.或者使用plain注释类,@Controller并将@ResponseBody实际需要的方法放在其中.