![](/img/trans.png)
[英]@Autowired doesn't work in @Controller in Spring Boot
[英]Why doesn't my spring boot error controller work?
我有一个简单的Spring启动Web应用程序(在Tomcat下运行),我无法弄清楚如何使错误处理程序工作。 到目前为止,我已经创建了Web应用程序和控制器,它们都运行良好。 也就是说,它们显示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
@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"
是我现有的百日咳模板,适用于我的其他终点。
我尝试了几种错误控制器,例如。 使用@RestController
而不是@Controller
将端点更改为"error"
(不是"/error"
),但没有运气。 在每种情况下,我都使用相同的通用404 HTML而不是我手工制作的模板。
任何人都可以看到我做错了什么或有任何关于如何追查我的问题的提示。
对于为什么Spring不会调用错误控制器的原始问题的最新答案:我认为你排除了使自定义ErrorController工作的魔力。 在Spring-Boot v2.1.6应用程序中,我必须允许(不排除)ErrorMvcAutoConfiguration类,然后它在页面未找到的情况等上使用自定义的MyController-implements-ErrorController类。它似乎是一个或者两种情况。 我认为你应该只排除ErrorMvc ..类,如果你使用Thymeleaf模板并且你已经在模板/目录中发布了模板文件,因为在这种情况下你真的不需要自定义错误控制器。 HTH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.