У меня есть веб-приложение Spring Boot, которое отлично работает из STS, но показывает другое поведение при запуске в Tomcat из файла WAR.
Я использую Thymeleaf для обработки всех своих веб-страниц, но у меня есть пара страниц, которые используют jQuery для отправки асинхронных вызовов и повышения динамичности взаимодействия с пользователем.
Во всяком случае, у меня есть метод контроллера, который вызывает метод службы, который может выдать RuntimeException
, который я обрабатываю следующим образом:
@ExceptionHandler(MyRuntimeException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public @ResponseBody String handleMyRuntimeException(MyRuntimeException exception) {
return "Oops an error happened : " + exception.getMessage();
}
В JS я использую тело ответа, которое я возвращаю выше, чтобы отобразить сообщение на экране.
Это отлично работает при запуске моего приложения в STS, но как только я переключаюсь на его развертывание в Tomcat, вызывается ErrorPageFilter
, а в doFilter()
это происходит:
if (status >= 400) {
handleErrorStatus(request, response, status, wrapped.getMessage());
response.flushBuffer();
}
В handleErrorStatus()
он создает ошибку со статусом и соответствующим сообщением, но не возвращает мой ответ.
Я не понял, как это решить, и я был бы очень признателен, если бы кто-нибудь мог помочь.
Спасибо!