#java #spring #spring-boot
#Ява #весна #пружинный ботинок
Вопрос:
У меня возникли проблемы с перенаправлением любого исключения на страницу с ошибкой. При возникновении ошибки вызывается метод, но перенаправление страницы не происходит, продолжаясь в том же, который выполняет действие. Код метода выглядит следующим образом:
@ControllerAdvice public class GlobalExceptionHandler extends RuntimeException { private Logger logger = Logger.getLogger(GlobalExceptionHandler.class); @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception{ logger.info("Tratando erro de exception."); logger.error("ERRO: " e); ModelAndView mav = new ModelAndView(); mav.setViewName("vixe"); return mav; } }
На скриншоте показано, что исключение произошло во время выполнения, но на странице ничего не меняется: Ошибка выполнения
Комментарии:
1. Почему вы продлеваете
RuntimeException
контракт ?2. Это была одна из попыток смягчить проблему, но безуспешно. Я просто забыл убрать
3. Никаких авансов. по — прежнему остается на том же экране
Ответ №1:
Я наконец понял, что происходит. Тот факт, что javascript делает запрос и запускает ошибку, чтобы вернуть сообщение, сделал ненужным вызов представления в методе обработки. Что я сделал, так это обработал ajax, сделав вызов страницы в случае ошибки запроса.
$.ajaxSetup({ error: function (x) { if (x.status == 500) { window.location.replace("vixe") } } });
Поэтому, если я звоню при загрузке страницы или в конце запросов, выполняется проверка ошибок и запускается экран ошибок.