Spring boot - как обработать исключение страницы, не найденную с помощью обработчика исключений - PullRequest
0 голосов
/ 22 октября 2018

Я делаю обработчик, в котором я должен быть в состоянии перенаправить пользователя на страницу входа в систему или настроенную страницу ошибки, когда пользователь пытается получить доступ к несуществующему 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.";
    }

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я думаю, вы можете попробовать это, по крайней мере, у меня это сработало:

  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, ...) {
0 голосов
/ 22 октября 2018

Не забудьте включить аннотацию @ControllerAdvice и расширить ResponseEntityExceptionHandler в классе, обрабатывающем эти исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...