Ошибка возврата по умолчанию для белой метки erorr - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть этот контроллер, который открыт, когда пользователь перенаправлен.

@Controller()
public class RedirectController {

      @RequestMapping(method = RequestMethod.GET, value = "/redirect")
      @ResponseBody
      public String handleRedirectMessage(HttpServletRequest request) throws Exception {
          ......
      }
}

Но когда совпадение не найдено, я получаю Whitelabel Error Page.Есть ли способ установить обработчик по умолчанию, который по умолчанию открыт, когда путь неверен?

1 Ответ

0 голосов
/ 25 сентября 2019

Вам необходимо добавить следующее свойство:

server.error.whitelabel.enabled=false

И реализовать интерфейс org.springframework.boot.web.servlet.error.ErrorController и переопределить его getErrorPath (), чтобы возвращать пользовательский путь для вызова при возникновении ошибки:

@Controller
public class MyErrorController implements ErrorController  {

    @RequestMapping("/error")
    public String handleError() {
        //do something like logging
        return "error";
    }

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

После этого добавьте страницу ошибки для пути "/ error" Thymeleaf error.html.

Также вы можете добавить пейджер для различных ошибок:

@RequestMapping("/error")
public String handleError(HttpServletRequest request) {
    Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);

    if (status != null) {
        Integer statusCode = Integer.valueOf(status.toString());

        if(statusCode == HttpStatus.NOT_FOUND.value()) {
            return "error-404";
        }
        else if(statusCode == HttpStatus.INTERNAL_SERVER_ERROR.value()) {
            return "error-500";
        }
    }
    return "error";
}

Здесь вы можете найти полный код пример и описание .

...