【问题标题】:Spring boot custom error page for 404404的Spring Boot自定义错误页面
【发布时间】:2014-11-30 14:54:10
【问题描述】:

我希望有自定义 404 错误页面。我的类路径中有速度,但我不想使用速度视图解析器 下面是我的代码

@EnableAutoConfiguration(exclude={VelocityAutoConfiguration.class})
@ComponentScan
public class Application {
Properties props = new Properties();

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}
}

我无法将所有 404 重定向到我在资源目录中的一些 html。

请帮忙

P.S 如果我使用velocityresolver 并且模板目录中有error.vm,它可以工作。

感谢问候

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    您可以提供EmbeddedServletContainerCustomizer 并在那里添加您的(例如静态)错误页面。请参阅 Spring Boot 文档中的 Error Handling。例如:

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

    【讨论】:

    • 谢谢,它奏效了,虽然我尝试了同样的方法但之前没有奏效(花了几个小时把我的头撞在墙上)。我想你需要一个静态文件夹来保存 html,我在资源文件夹中有我的 404.html。
    • 是的,静态文件必须在静态文件夹中。但是您可以配置其他您希望提供静态文件的位置,也可以在此处使用视图(而不是静态文件)。
    • @cfrick,您将如何使用视图而不是静态文件?
    • EmbeddedServletContainerCustomizer 是否在其他库中可用?等等 Spring MVC?
    【解决方案2】:

    截至 Spring Boot 1.4.x

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

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

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

    要使用 freemarker 模板映射所有 5xx 错误,您需要这样的结构:

    src/
     +- main/
         +- java/
         |   + <source code>
         +- resources/
             +- template/
                 +- error/
                 |   +- 5xx.ftl
                 +- <other templates>
    

    查看Spring Boot documentation 了解更详细的讨论。

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 1970-01-01
      • 2018-02-11
      • 2016-04-25
      • 2013-09-16
      • 2020-10-24
      • 2017-10-06
      • 2015-09-04
      • 2015-02-07
      相关资源
      最近更新 更多