Контроллер или RestController - PullRequest
0 голосов
/ 10 ноября 2018

Я новичок в jEE, и это мой первый код jEE с использованием Spring. Код ниже работает нормально. Он просто печатает строковый индекс, когда я иду на мой локальный хост; а иначе он печатает ошибку обработки.

Мой вопрос: почему этот код больше не работает, если я использую @Controller вместо @RestController

Я не могу найти никакого простого объяснения в документах весны, и я надеялся, что кто-нибудь сможет это объяснить.

У меня такое чувство, что один контроллер не может работать без чего-то вроде тимелина (я знаю, что если бы я использовал тимелеф, строковый индекс был бы заменен страницей индекса из папки ресурсов), где RestController мог бы возвращать данные как XML или JSON или что-то еще.

Спасибо

@RestController
public class HelloController implements ErrorController {

    @RequestMapping("/")
    public String index() {
        return "index";
    }

    @RequestMapping("/error")
    public String error() {
        return "gestion erreur";
    }


    @Override
    public String getErrorPath() {
        return "/error";
    }
}

1 Ответ

0 голосов
/ 10 ноября 2018

Задача @Controller состоит в том, чтобы создать карту объекта модели и найти представление, но @RestController просто возвращает объект, и данные объекта напрямую записываются в ответ HTTP в виде JSON или XML.

@Controller - это обычная аннотация, которая используется для пометки класса как Spring MVC Controller, тогда как @RestController - это специальный контроллер, используемый в веб-сервисах RESTFul и эквивалентный @Controller + @ResponseBody.

Если вам нужна та же функциональность, что и у @RestController без ее использования, вы можете использовать @Controller и @ResponseBody.

@Controller
public class HelloController{

    @RequestMapping("/")
    @ResponseBody
    public String index() {
        return "index";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...