Returning view from Spring MVC @RestController

后端 未结 2 1534
广开言路
广开言路 2020-11-30 11:31

As @RestController is composition of @Controller and @ResponseBody, I believe if I want my controller to work as both MVC and REST con

相关标签:
2条回答
  • 2020-11-30 12:10

    @RestController annotation, which marks this class as a controller where every method returns a domain object/pojo instead of a view. It means that we are no more using view-resolvers, we are no more directly sending the html in response but we are sending domain object converted into format understood by the consumers.

    0 讨论(0)
  • 2020-11-30 12:20

    @RestController is not meant to be used to return views to be resolved. It is supposed to return data which will be written to the body of the response, hence the inclusion of @ResponseBody. You can not selectively disable the @ResponseBody on individual handler methods when @ResponseBody is already annotation on class level.

    You can work around it by returning ModelAndView, which will work even in @RestController, but you really shouldn't:

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

    It would be better to create separate controllers for normal handlers returning views and REST controllers for the RESTful stuff. Or to annotate the class with plain @Controller and put @ResponseBody on the methods where you actually need it.

    0 讨论(0)
提交回复
热议问题