ExceptionHandlerExceptionResolver的自定义参数解析器
问题描述:
我想在spring mvc 3.2中用ExceptionHandler注解的方法中使用自定义参数来处理异常。 但是我仍然获得时执行该方法此异常: java.lang.IllegalStateException:没有合适的解析程序参数[1] [式= com.example.domain.CustomArgument]ExceptionHandlerExceptionResolver的自定义参数解析器
在控制器方法是这样的:
@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:注解驱动已经分配ExceptionHandlerExceptionResolver,所以我怎么能在customArgumentResolver添加到这一点。 任何帮助将不胜感激。
答
对于几个ExceptionResolvers,请尝试使用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>