Как использовать spring4 @RestController для возврата страницы jsp?

Когда я использую spring3 @Controller следующим 9X_spring-config образом:

@RequestMapping("/userCenter") @Controller public class LoginCtrl { @RequestMapping("/loginPage") public String login(HttpServletRequest request,HttpServletResponse response,Model model) throws Exception { return "userCenter/loginPage"; } } 

Ничего страшного, я получаю правильный 9X_spring-mvc-initbinders контент loginPage.jsp в браузере.

но когда 9X_spring-mvc-initbinders я меняю @Controller на @RestController

localhost: 8080 9X_spring-mvc // userCenter / loginPage возвращает страницу 9X_spring-java-config со строкой «userCenter / loginPage»

Итак, как 9X_spring-mvc я могу использовать @RestController для 9X_spring получения jsp-страниц, таких как @Controller?

10
1

  • Конкретная * точка * `@ RestController` заключается в том, что вы не возвращаете представлени ...
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как использовать spring4 @RestController для возврата страницы jsp?

Не стоит. @RestController не предназначен для возврата 9X_spring-config имен представлений через тип / значение 9X_spring-web возвращаемого значения String. Он предназначен 9X_spring-config для возврата того, что будет записано напрямую 9X_spring-web в тело ответа.

Более конкретно (в случае 9X_spring-mvc-initbinders общей конфигурации) Spring MVC настраивает 9X_spring-mvc-initbinders свои обработчики возвращаемых значений в 9X_spring-mvc RequestMappingHandlerAdapter#getDefaultReturnValueHandlers(). Если вы посмотрите на эту реализацию, обработчик 9X_spring-java-config имен представлений String, ViewNameMethodReturnValueHandler, будет зарегистрирован 9X_spring-mvc после обработчика для @RestController (на самом деле @ResponseBody), RequestResponseBodyMethodProcessor.

Если 9X_spring-web вам действительно нужно, вы можете объявить 9X_spring-web свой метод с типом возвращаемого значения 9X_spring View или ModelAndView (их обработчики, ViewMethodReturnValueHandler и ModelAndViewMethodReturnValueHandler, зарегистрированы 9X_spring перед RequestResponseBodyMethodProcessor) и вернуть соответствующий объект 9X_spring с идентифицирующим именем представления.

13
1

  • Кто-то, кто не знает, почему Spring представил `@ RestController`<p><span ...

Ответ #2

Ответ на вопрос: Как использовать spring4 @RestController для возврата страницы jsp?

На самом деле @RestController также может возвращать представление:

  1. Установите 9X_spring-config для метода контроллера тип возвращаемого 9X_spring-mvc значения ModelAndView

  2. Задайте путь просмотра следующим 9X_spring-mvc образом:

    ModelAndView mav = new ModelAndView("userCenter/loginPage");

  3. return mav;

Вы получаете правильное содержимое 9X_spring-mvc-initbinders просмотра страницы JSO.

10
3

  • Да, вы * можете * сделать это таким образом, но не должны. Здесь вам не хватает фундаментального понимания того, что ...