Spring Boot作为自动配置的一部分,默认显示一个 "空白"错误页面。在本教程中,你将学习如何使用不同的视图解析器创建一个自定义错误页面。
定制错误页面的最简单方法是创建一个自定义视图,该视图将解析为名为 "error "的视图。最终,这取决于错误视图被解析时所在的视图解析器。这意味着在实践中,任何实现Spring的视图接口的Bean ID为 "error "的BeanNameViewResolver都会被解析。
这个自定义错误模板应命名为 "error.html",并放在模板目录下,以便Thymeleaf模板解析器找到。对于典型的Maven构建,这意味着将其放在src/main/resources/templates中
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <style>div { background-color:lightblue; }</style> </head> <h1>Error!</h1> <div class="errorPage"> <br /> <p> There seems to be a problem with the page you requested ( <span th:text="${path}" /> ). </p> <p th:text="${'Details: ' + message}" /> <p th:text="${'Status: ' + status}" /> </div> </html>
这是带有自定义错误页面的项目树。
├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── demo │ │ │ └── DemoApplication.java │ │ └── resources │ │ ├── application.properties │ │ ├── static │ │ └── templates │ │ └── error.html
现在,如果你请求一个未找到的页面,就会发现你的错误页面。
正如你所看到的,一些属性在视图中是自动可用的。默认情况下,Spring Boot让以下错误属性在错误视图中可用。
timestamp -错误发生的时间
status - HTTP状态代码
error -错误的原因
exception - 异常的类别名称
message -异常信息(如果错误是由异常引起的)。
errors -来自BindingResult异常的任何错误(如果错误是由异常引起的)。
trace -异常的堆栈跟踪(如果错误是由异常引起的)。
path -错误发生时请求的URL路径。
如果你想让堆栈跟踪作为表达式属性包含在我们的Thymeleaf视图中,你需要在src/main/resources/application.properties中进行配置
server.error.include-stacktrace=always
如果你使用JSP作为视图解析器,那么你可以在src/main/webapp/WEB-INF/views文件夹中放置一个名为 "error.jsp "的错误页面。
下面是一个示例页面,它能够输出一些导出的错误状态变量。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <html> <body> <h1>Oops!!!</h1> <table> <tr> <td>Error</td> <td>${error}</td> </tr> <tr> <td>Status</td> <td>${status}</td> </tr> <tr> <td>Message</td> <td>${message}</td> </tr> <tr> <td>Exception</td> <td>${exception}</td> </tr> <tr> <td>Trace</td> <td> <pre>${trace}</pre> </td> </tr> </table> </body> </html>
除此之外,我们必须在 src/main/resources/application.properties 中禁用默认的白标签页面,并使堆栈跟踪作为表达式属性包含在我们的视图中。
spring.mvc.view.prefix= /WEB-INF/views/ spring.mvc.view.suffix= .jsp server.error.whitelabel.enabled=false server.error.include-stacktrace=always
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
内容来源于网络,如有侵权,请联系作者删除!