我有一个重定向用户时打开的控制器。
@Controller()
public class RedirectController {
@RequestMapping(method = RequestMethod.GET, value = "/redirect")
@ResponseBody
public String handleRedirectMessage(HttpServletRequest request) throws Exception {
......
}
}
但是当找不到匹配项时,我得到Whitelabel Error Page
。有什么方法可以设置默认处理程序,该默认处理程序在路径不正确时默认打开?
您需要添加以下属性:
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";
}
您可以在此处找到完整的代码example和description。