Пользовательская страница ошибок не работает, когда getErrorPath () возвращает путь, отличный от "/ error" - PullRequest
1 голос
/ 20 января 2020

Spring boot: 2.2.2
IDE: Spring Tool Suite

Одним из способов создания пользовательской страницы ошибок является создание класса контроллера, реализующего ErrorController. Переопределив метод getErrorPath() и вернув /error, я могу вернуть ожидаемую пользовательскую страницу ошибки.

Но когда я возвращаю другой путь, отличный от /error, я получаю следующую ошибку:

Эта страница локального хоста не найдена. Веб-страница для этого адреса не найдена: http://localhost: 8080 / Брюс

Почему это так?

@Controller
public class MyErrorController implements ErrorController{

 // @RequestMapping("/error")
    @RequestMapping("/error1")
    public String handleError() {
        return "customError";
    }

    @Override
    public String getErrorPath() {

        //return "/error"; 
        return "/error1"; 
    }
}

1 Ответ

1 голос
/ 21 января 2020

Итак, получается, что выход getErrorPath не используется для перенаправления на RequestMapping из handleError.

Если вы предоставите следующее ErrorController, при ошибке он будет по-прежнему перенаправлять на /error при возникновении ошибки:

@Controller
public class MyErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        return "customError";
    }

    @Override
    public String getErrorPath() {
        return "/some-non-existing-path";
    }
}

Я даже обнаружил, что работает следующий код, и RuntimeException никогда не срабатывает:

@Controller
public class CustomErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        return "customError";
    }

    @Override
    public String getErrorPath() {
        throw new RuntimeException("This will not be called.");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...