@Controller и @RequestMapping в пользовательском контроллере ошибок - PullRequest
1 голос
/ 09 июня 2019

У меня есть приложение, которое использует swagger и websocket рядом с обычным REST.Swagger имеет конечную точку по умолчанию /api/swagger-ui.html, а websocket имеет конечную точку по умолчанию /api/websocket.

. Я хотел реализовать пользовательский контроллер, который бы перенаправлял внутренние ошибки на страницу.Первоначально я делал это следующим образом

@Controller("/error")
public class ErrorPageController implements ErrorController {
    ....    
    @GetMapping
    public String handleGetError(HttpServletRequest request) {
        return handleError(request);
    }
    ....

Однако это привело к переадресации, когда я использовал конечные точки swagger и websocket.Когда я его поменял

@Controller
@RequestMapping("/error")
public class ErrorPageController

Стало нормально работать.Почему это?

Ответы [ 3 ]

1 голос
/ 09 июня 2019

Я думаю, что проблема с @Controller("/error")

Согласно Spring Docs :

@Controller

Аннотация служиткак специализация @Component, позволяющая автоматически определять классы реализации посредством сканирования путей к классам.Обычно он используется в сочетании с аннотированными методами-обработчиками на основе аннотации RequestMapping.

Необязательный элемент, который вы можете передать:

@Controller(String value)

Значение может указывать на предложение для логического имени компонента, который должен быть превращен в bean-компонент Spring в случае автоопределения компонента.

Можно сделать вывод, что / error в @Controller("/error") это просто имя компонента, а не путь.

1 голос
/ 09 июня 2019

Well Controller - это специализированный компонент весной, и передаваемое вами значение обрабатывается как имя компонента, а не путь, который должен обрабатывать этот контроллер.

0 голосов
/ 09 июня 2019

Вы должны добавить @ RequestMapping для определения пути

 @RequestMapping("error")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...