我有一个简单的 spring boot web 应用程序(在 Tomcat 下运行),但我不知道如何让错误处理程序工作。到目前为止,我已经创建了 Web 应用程序和 Controller ,它们都运行良好。也就是说,它们显示 Thymeleaf 模板。出错时。我得到默认的白标签错误页面。
我首先通过添加 EnableAutoConfiguration
注释禁用了这个白色标签错误页面,因此:
@SpringBootApplication(scanBasePackages="au.com.sample")
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class})
public class SampleWebApp extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SampleWebApp.class);
}
}
现在,如果我浏览到一个未知页面,我会得到一个通用的 404 HTML 错误页面,其中包含:
<html>...<body><h1>HTTP Status 404 – Not Found</h1></body></html>
所以这一步奏效了。现在,当我尝试添加自己的错误 Controller 时,当我浏览到不存在的端点时,它不会触发:
@Controller
@RequestMapping("/")
public class ErrorHandlingController implements ErrorController {
@Override
public String getErrorPath() {
return "/error";
}
@RequestMapping(/"error")
public ModelAndView handleError() {
ModelAndView mav = new ModelAndView();
mav.addObject("title", "Error");
mav.setViewName("layout");
return mav;
}
}
“layout”
是我现有的 thymeleaf 模板,它适用于我的其他端点。
我已经尝试了错误 Controller 的几种变体,例如。将端点更改为 "error"
(不是 "/error"
),使用 @RestController
而不是 @Controller
但没有运气。在每种情况下,我都会得到相同的通用 404 HTML,而不是我手工制作的模板。
任何人都可以看到我做错了什么或有任何关于如何追踪我的问题的提示。
最佳答案
在 Spring Boot 中显示特定状态的自定义错误页面非常容易。只需添加 <error-code>.html
进入src/main/resources/templates/errors
目录来解决它。或者添加一个通用的 error.html
作为后备。参见 the reference guide对于此功能(另请参阅 this )。
如果您想添加自己的错误处理,只需添加一个类型为 ErrorController
的 bean。或者,如果您只想添加属性,请添加 ErrorAttributes
将 bean 输入到您的配置中。参见 this section获取更多信息。
关于java - 为什么我的 spring boot 错误 Controller 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50155533/