我正在创建一个处理程序,其中当用户尝试访问不存在的URL时,我应该能够将用户重定向到登录页面或自定义错误页面,我正在使用异常处理程序来捕获错误,但是问题是它并没有传递给处理程序,而是给了我一个白色标签错误页面。
代码如下:
@ExceptionHandler(value = ResourceNotFoundException.class)
public String exception(ResourceNotFoundException e, HttpServletRequest request, RedirectAttributes redirectAttributes) {
long now = new Date().getTime();
long lastAccessed = request.getSession().getLastAccessedTime();
boolean isNotLoggedIn = (now - lastAccessed) <= 0L;
if (isNotLoggedIn) {
return "forward:/login";
}
return "forward:/access-forbidden?errorMessage=Page Not found.";
}
答案 0 :(得分:1)
我认为您可以尝试一下,至少对我有用:
application.properties
中添加这两个属性:spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
ResourceNotFoundException
更改为NoHandlerFoundException
@ExceptionHandler(value = NoHandlerFoundException.class)
public String exception(NoHandlerFoundException e, ...) {
答案 1 :(得分:0)
确保在处理这些异常的类中包括@ControllerAdvice
注释并扩展ResponseEntityExceptionHandler
。