Почему не работает мой контроллер ошибок весенней загрузки? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть простое веб-приложение с весенней загрузкой (запущенное под 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 вместо созданного вручную шаблона.

Может кто-нибудь увидеть, что я делаю неправильно, или есть какие-нибудь советы о том, как отследить мою проблему.

1 Ответ

0 голосов
/ 04 мая 2018

Показывать пользовательскую страницу ошибки для определенного статуса довольно просто в Spring Boot. Просто добавьте <error-code>.html в каталог src/main/resources/templates/errors, чтобы разрешить его. Или добавьте общий error.html в качестве запасного варианта. См. справочное руководство для этой функции (см. Также this ).

Если вы хотите добавить свою собственную обработку ошибок, просто добавьте bean-компонент типа ErrorController или если вы хотите добавить только атрибуты, добавьте bean-компонент типа ErrorAttributes в вашу конфигурацию. См. этот раздел для получения дополнительной информации.

...