Spring Boot 和自定义 404 错误页面

新手上路,请多包涵

在我的 Spring Boot 应用程序中,我正在尝试配置自定义错误页面,例如对于 404,我在我的应用程序配置中添加了以下 Bean:

 @Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
        }
    };
}

此外,我还创建了以下简单的 Thymeleaf 模板:

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>404 Not Found</title>
        <meta charset="utf-8" />
    </head>
    <body>
        <h3>404 Not Found</h3>
        <h1 th:text="${errorCode}">404</h1>
        <p th:utext="${errorMessage}">Error java.lang.NullPointerException</p>
        <a href="/" th:href="@{/}">Back to Home Page</a>
    </body>
</html>

并将其添加到 /resources/templates/ 文件夹中。现在在 404 错误上我只能看到白屏。

我做错了什么以及如何正确设置我的 404 页面?另外,是否可以使用模板而不仅仅是自定义错误页面的静态页面?

原文由 brunoid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
2 个回答

您正在使用 Thymeleaf,并且 Thymeleaf 可以在没有控制器的情况下处理错误。

对于一般错误页面,此 Thymeleaf 页面需要命名为 error.html

并且应该放在 src/main/resources > templates > error.html

Thymleaf 错误.html

对于特定的错误页面,您需要在名为 error 的文件夹中创建名为 http 错误代码的文件,例如: src/main/resources/templates/error/404.html

原文由 GoutamS 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Spring Boot 1.4.x 中,您可以添加 自定义错误页面

如果要显示给定状态代码的自定义 HTML 错误页面,请将文件添加到 /error 文件夹。错误页面可以是静态 HTML(即添加到任何静态资源文件夹下)或使用模板构建。文件名应该是准确的状态代码或系列掩码。

例如,要将 404 映射到静态 HTML 文件,您的文件夹结构将如下所示:

 src/
 +- main/
     +- java/
     |   + <source code>
     +- resources/
         +- public/
             +- error/
             |   +- 404.html
             +- <other public assets>

原文由 brunoid 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题