白色标签erorr的默认返回错误

问题描述 投票:0回答:1

我有一个重定向用户时打开的控制器。

@Controller()
public class RedirectController {

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

但是当找不到匹配项时,我得到Whitelabel Error Page。有什么方法可以设置默认处理程序,该默认处理程序在路径不正确时默认打开?

spring spring-boot spring-rest
1个回答
0
投票

您需要添加以下属性:

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";
}

您可以在此处找到完整的代码exampledescription

© www.soinside.com 2019 - 2024. All rights reserved.