![](/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.