У меня есть простое веб-приложение с весенней загрузкой (запущенное под Tomcat), и я не могу понять, как заставить работать обработчик ошибок. До сих пор я создал веб-приложение и контроллеры, и все они работают нормально. То есть они отображают шаблоны 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"
- это мой существующий шаблон из тимьяна, который отлично работает для других моих конечных точек.
Я пробовал несколько вариантов контроллера ошибок, например. изменив конечную точку на "error"
(не "/error"
), используя @RestController
вместо @Controller
, но безуспешно. В каждом случае я получаю один и тот же общий HTML-код 404 вместо созданного вручную шаблона.
Может кто-нибудь увидеть, что я делаю неправильно, или есть какие-нибудь советы о том, как отследить мою проблему.