使用@RequestBody的spring mvc异常处理程序

时间:2012-06-06 20:30:25

标签: java spring spring-mvc

在我的Spring MVC应用程序中,我有许多方法使用@RequestBody绑定到我定义的域对象(特别是使用Jackson的JSON)。

我目前正在使用简单的异常视图,如下所示:

<bean id="exceptionHandler" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="defaultErrorView" value="errorXmlView" />
</bean>


<bean id="errorXmlView" class="com.example.MyCustomXmlView" />

我的问题是,在MyCustomXmlView内部,目前只是扩展AbstractView,有没有办法可以访问与@RequestBody绑定的对象?假设,即它已经达到了那么远,并且它不是一个绑定异常。例如,是否有某种我可以调用的请求范围的bean,或者是一种将对象注入模型以供我的异常视图使用的方法?如果没有,是否有一种不同的方式来定义 允许我这样做的异常解析器?

2 个答案:

答案 0 :(得分:2)

您是否考虑过@ExceptionHandler注释? spring documentation有一个使用示例,我想你可以创建一个自定义异常,它将保留在你的模型上,然后你应该能够在你的异常处理方法中访问它。

答案 1 :(得分:1)

我经常使用ThreadLocal捕获控制器方法参数,然后存储它们以便以后用于记录等。我发现的最好方法是使用@Aspect(或无论你喜欢什么AOP策略)拦截控制器方法并存储方法参数供以后使用。