捕获404错误Spring Boot返回自定义html

时间:2019-01-23 08:13:01

标签: spring-boot spring-mvc thymeleaf

如何在应用程序中捕获404错误并呈现自定义html(如index.html)?我不想使用/ error文件夹中的页面。

例如,如果我要http://localhost:8080/test且没有用于测试的映射,则我的应用程序应在/ resources / template文件夹内呈现index.html

谢谢

****编辑****

kinda用这种方法解决了,不好的是,即使更改getErrorPath返回值,我也无法更改请求映射的路径。

@Controller
public class MyCustomErrorController implements ErrorController {

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

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

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现自定义错误页面。一种简单的方法是使用/resources/public/error/404.html,这在您的情况下是不希望的。

选项:1 您可以尝试配置ControllerAdvice吗?

application.properties
    spring.mvc.throw-exception-if-no-handler-found=true
----------------------
@ControllerAdvice
class YourApplicationExceptionHandler {

    @ResponseStatus(HttpStatus.NOT_FOUND)  // 404
    @ExceptionHandler(NoHandlerFoundException.class)
    public ModelAndView handleNoHandlerFoundException() {
        return new ModelAndView("viewName");
    }
} 

选项2: 如果您为错误定义了其他路径,则只需更改/ error路径即可。在您的Controller中,定义相应的路径映射并路由到自定义视图。

server.error.path=/yourcustomerrorpath

选项3:使用ErrorController

@Controller
public class MyCustomErrorController implements ErrorController {

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

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