【问题标题】:Custom Argument Resolver for ExceptionHandlerExceptionResolverExceptionHandlerExceptionResolver 的自定义参数解析器
【发布时间】:2013-04-09 12:01:49
【问题描述】:

我正在尝试在 spring mvc 3.2 中使用 ExceptionHandler 注释的方法中使用自定义参数来处理异常。 但是,当执行该方法时,我仍然会收到此异常: java.lang.IllegalStateException:没有合适的参数解析器[1] [type=com.example.domain.CustomArgument]

Controller 方法如下所示:

@ExceptionHandler(IOException.class)
@ResponseBody
public Error handleIOException(IOException ex, CustomArgument customArgument) {
    return new Error(customArgument.getMessage());
}

我正在使用以下 xml 配置:

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean class="com.example.spring.CustomArgumentWebArgumentResolver" scope="singleton">
            <constructor-arg ref="customArgumentService" />
        </bean>
    </mvc:argument-resolvers>
</mvc:annotation-driven>

<bean id="customArgumentService" class="com.example.service.CustomArgumentService" scope="singleton" />

<bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver" scope="singleton">
    <property name="customArgumentResolvers">
        <list>
            <bean class="com.example.service.CustomArgumentService" scope="singleton">
                <constructor-arg ref="customArgumentService" />
            </bean>
        </list>
    </property>
</bean>

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" scope="singleton">
    <property name="defaultErrorView" value="forward:/error" />
</bean>

而且我相信 mvc:annotation-driven 已经分配了一个 ExceptionHandlerExceptionResolver,那么我该如何添加 customArgumentResolver。 任何帮助将不胜感激。

【问题讨论】:

    标签: spring-mvc


    【解决方案1】:

    对于多个 ExceptionResolver,请尝试使用 HandlerExceptionResolverComposite。像这样的:

    <bean class="org.springframework.web.servlet.handler.HandlerExceptionResolverComposite">
        <property name="exceptionResolvers">
            <list>
                <bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
                    <constructor-arg ref="exceptionHandlerExceptionResolver" />
                </bean>
                <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
                    <constructor-arg ref="simpleMappingExceptionResolver" />
                </bean>
            </list>
        </property>
        <property name="order" value="0"/>
    </bean>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 2018-08-06
      • 2013-08-03
      • 2015-11-06
      • 2014-03-27
      • 1970-01-01
      相关资源
      最近更新 更多