在我的
GlobalExceptionHandler
类中,我实现了负责捕获与过期或丢失 cookie 相关的异常的方法。捕获异常后,用户应该被重定向回登录页面。
public ModelAndView handleMissingCookieException(HttpServletRequest request, Exception e, HttpServletResponse response) throws IOException {
log.error(getEndpointData(request.getMethod(), request.getRequestURL().toString()) + e.getLocalizedMessage());
return new ModelAndView("redirect:/web/login/login-page?cookieError");
}
尽管在上面粘贴的方法中处理了异常(我可以在日志中看到消息),但重定向不会发生。
我创建了一个经过测试且有效的示例。我想问题是 /web/login/login-page 是页面文件。但是,重定向需要 URL 路径。
@GetMapping("/goToViewPage")
public ModelAndView viewPage() throws RuntimeException {
if (1 == 1) throw new RuntimeException();
return new ModelAndView("view/viewPage");
}
@GetMapping("/goToViewPage2")
public ModelAndView viewPage2() {
return new ModelAndView("view/viewPage2");
}
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler({RuntimeException.class})
public ModelAndView handleRuntimeException(HttpServletRequest request, Exception e, HttpServletResponse response) {
return new ModelAndView("redirect:/goToViewPage2");
}
}