在我的 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 许可协议
您正在使用 Thymeleaf,并且 Thymeleaf 可以在没有控制器的情况下处理错误。
对于一般错误页面,此 Thymeleaf 页面需要命名为
error.html
并且应该放在
src/main/resources > templates > error.html
对于特定的错误页面,您需要在名为 error 的文件夹中创建名为 http 错误代码的文件,例如:
src/main/resources/templates/error/404.html
。