404的Spring启动自定义错误页面

时间:2014-10-06 10:51:45

标签: spring-boot

我希望有自定义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,那么它可以工作。

谢谢你的问候

2 个答案:

答案 0 :(得分:11)

您可以提供EmbeddedServletContainerCustomizer并在那里添加您的(例如静态)错误页面。请参阅spring boot docs中的Error Handling。 E.g:

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

答案 1 :(得分:8)

从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>
     

要使用自由标记模板映射所有5xx错误,您将拥有如下结构:

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

查看Spring Boot documentation以获取更详细的讨论。