Установка throwExceptionIfNoHandlerFound не имеет никакого эффекта в Spring 4.2.*

Настройка throwExceptionIfNoHandlerFound весной не действует 4.2.2. Это важно для меня, так как я должен отправить все ответы в формате JSON.

Я устанавливаю throwExceptionIfNoHandlerFound в моем AppInitializer вот так:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    [...]

    @Override
    protected void customizeRegistration(Dynamic registration) {
        boolean done = registration.setInitParameter("throwExceptionIfNoHandlerFound", "true"); // -> true
        if(!done) throw new RuntimeException();
    }
}

Кажется, это работает, потому что DispatcherServlet#noHandlerFound вызывает исключение, как и ожидалось:

// https://github.com/spring-projects/spring-framework/blob/4.2.x/spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java#L1013
protected void noHandlerFound(HttpServletRequest request, HttpServletResponse response) throws Exception {
    if (pageNotFoundLogger.isWarnEnabled()) {
        pageNotFoundLogger.warn("No mapping found for HTTP request with URI [" + getRequestUri(request) +
                "] in DispatcherServlet with name '" + getServletName() + "'");
    }
    if (this.throwExceptionIfNoHandlerFound) {
        throw new NoHandlerFoundException(request.getMethod(), getRequestUri(request),
                new ServletServerHttpRequest(request).getHeaders());
    }
    else {
        response.sendError(HttpServletResponse.SC_NOT_FOUND);
    }
}

Но затем (это очень сбивает с толку!) КАЖДЫЕ исключения попадают в ловушку и разрешаются в виде ошибок. Так что невозможно справиться с NoHandlerFoundException с помощью Spring-@ExceptionHandler

Вопрос:

Я уверен, что это очень хорошая и полезная функция, но есть ли способ обнаружить ошибку 404, чтобы отправить пользовательский ответ вместо стандартной страницы ошибки html?

1 ответ

Кажется, это происходит, когда мы переопределяем использование обработки сервлета по умолчанию. Ответил здесь

Другие вопросы по тегам