Catch Spring MVC No Mapping Error - PullRequest
       2

Catch Spring MVC No Mapping Error

3 голосов
/ 27 сентября 2010

В моем файле веб-конфигурации я настроил описатель исключений, указанный ниже, но не уверен, почему он не может его обработать. ошибки, такие как «Ошибка соответствия не найдена для запроса сервлета: путь» / etc '

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="java.lang.Exception">
                exception
            </prop>
        </props>
    </property>
</bean>

Мое приложение использует Ajax, и в некоторых случаях я изменяю целевой URL-адрес в зависимости от взаимодействия с пользователем.

У меня такой вопрос: могу ли я перехватить ошибку в Spring MVC и переслать ее в мой файл exception.jsp, чтобы мой пользователь не получил противный 404.

Ответы [ 2 ]

2 голосов
/ 27 сентября 2010

SimpleMappingExceptionResolver (и структура HandlerExceptionResolver в целом) будут вызываться только для обработки исключений, сгенерированных обработчиком запросов (т. Е. Вашими контроллерами). Если для обработки запроса не настроен ни один обработчик, он не сможет зайти так далеко, и ваш обработчик не будет вызван.

Самое простое, что вам нужно сделать, - это настроить страницу обработки 404 в вашем web.xml, например,

<error-page>
    <error-code>404</error-code>
    <location>/error.html</location>
</error-page>
1 голос
/ 07 января 2016

Вы можете установить универсальное @RequestMapping и выдать пользовательское исключение, если оно выполнено. Затем вы можете обработать это исключение с помощью метода SimpleMappingExceptionResolver или @ExceptionHandler (может быть, в классе @ControllerAdvice).

Контроллер всеобъемлющего контроля:

@RequestMapping(value = "/**")
public ModelAndView noHandlerMappingFound() throws HandlerNotFoundException {
    throw new HandlerNotFoundException("No handler mapping found.");
}

Здесь HandlerNotFoundException - ваш тип исключений.

Совет контроллера:

@ExceptionHandler(NoSuchEntityException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ModelAndView handleNoSuchEntityException(final HttpServletRequest req, final Exception ex) {
    return new ModelAndView("error-page");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...