Как отправить исключения в exceptionController? - PullRequest
1 голос
/ 25 мая 2010
<bean
    class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="mappedHandlers">
        <set>
            <ref bean="exceptionController" />
        </set>
    </property>
    <property name="defaultErrorView" value="tiles/content/error" />
</bean>

Я пытаюсь отправить исключения на контроллер, чтобы я мог создать перенаправление. Если я закомментирую часть mappedHandlers, то отобразится плитка ошибки, но это будет только плитка. Остальные плитки загружаются нормально. Мне нужно сделать перенаправление в контроллере, чтобы я мог показать страницу с ошибкой, а не только плитку с ошибкой.

Я не могу найти достаточно информации или пример того, как исключение вызывает какой-то метод в exceptionController.

1 Ответ

5 голосов
/ 26 мая 2010

Вы неправильно понимаете, для чего используется свойство mappedHandlers. Это говорит о том, что этот компонент разрешения исключений должен применяться только к исключениям , генерируемым контроллерами, перечисленными в этом свойстве. не отправляет исключения на этому контроллеру.

Если вы хотите отправить простое перенаправление, вы можете сделать что-то вроде этого:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="defaultErrorView" value="redirect:/myErrorPage" />
</bean>

Однако при этом вы потеряете всю информацию об исключении.

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

Другой альтернативой является использование стиля аннотации @ExceptionHandler (см. Документы здесь ).

...