【发布时间】:2016-11-04 11:10:54
【问题描述】:
当我在@ExceptionHandler 内抛出异常throw new ForbiddenAjaxException()
@ExceptionHandler({ ForbiddenException.class })
public String forbiddenException(HttpServletRequest request, HttpServletResponse response) {
if( "XMLHttpRequest".equals(request.getHeader("X-Requested-With")) ){
throw new ForbiddenAjaxException();
}
return "redirect:/projects/error";
}
它没有回复@ResponseStatus( HttpStatus.FORBIDDEN )
@ResponseStatus( HttpStatus.FORBIDDEN )
public class ForbiddenAjaxException extends RuntimeException {}
日志错误:
11:00:06.277 [http-nio-8080-exec-8] ERROR org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: public java.lang.String controller.projects.ExceptionHandling.forbiddenException(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
exceptions.ForbiddenAjaxException
at controller.projects.ExceptionHandling.forbiddenException(ExceptionHandling.java:33) ~[classes/:?]
P.S : 当ForbiddenException(正常请求不是 ajax 请求)被抛出时,它会被异常处理程序捕获。
【问题讨论】:
-
如果你直接从控制器抛出
ForbiddenAjaxException会发生什么? -
@Ralph 如果我直接从控制器抛出 ForbiddenAjaxException,它会起作用
-
可以添加异常处理程序和控制器代码的完整代码吗?
-
删除@ExceptionHandler 会发生什么
标签: java spring spring-mvc