Spring 异常处理程序中不会发生重定向

问题描述 投票:0回答:1

在我的

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");
  }

尽管在上面粘贴的方法中处理了异常(我可以在日志中看到消息),但重定向不会发生。

spring-boot spring-mvc model-view-controller spring-security
1个回答
0
投票

我创建了一个经过测试且有效的示例。我想问题是 /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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.