Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Порядок ExceptionResolver'ов в Spring


Автор: lamao 29.4.2013, 12:28
Есть приложение где посредством SimpleMappingExceptionResolver некоторые исключения мапятся на свои страницы ошибок. И вот понадобилось перехватить ситуацию, когда у нас параметр integer, а в запросе пришло скажем 1000000000000. Спринг трактует это как org.springframework.beans.TypeMismatchException, которое обрабатывается org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver, который по порядку просмотра идет перед нашим обработчиком. Сделал такой конфиг (PrettyLogExceptionResolver - это наследник SimpleMappingExceptionResolver )

Код

    <bean class="org.jtalks.jcommune.web.exception.PrettyLogExceptionResolver">
        <property name="order" value="1"/>
        <property name="exceptionMappings">
            <props>
                <prop key="org.jtalks.jcommune.service.exceptions.NotFoundException">/errors/404</prop>
                <prop key="org.springframework.security.access.AccessDeniedException">/errors/accessDenied</prop>
                <prop key="org.springframework.beans.TypeMismatchException">/errors/400</prop>
            </props>
        </property>
        <property name="warnLogCategory" value="org.jtalks.jcommune"/>
        <property name="defaultErrorView" value="/errors/500"/>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver">
        <property name="order" value="2"/>
    </bean> 


Все работает, но теперь, как я увидел в дебагере, в цепочке после PrettyLogExceptionResolver почему-то 2 DefaultHandlerExceptionResolver.
Вопрос - почему и как можно исправить? Оно то вроде не мешает, но все же криво как то смотрится.

Автор: MisterCleric 29.4.2013, 12:41
Привет.
Рекомендую посметреть в дебаге, что происходит здесь:
Код

DispatcherServlet#initHandlerExceptionResolvers

Я бы сказал, что у тебя у конфиге где-то еще хакрался DefaultHandlerExceptionResolver с другим order

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)