抛出异常时重定向的请求

时间:2010-12-12 07:37:03

标签: java exception redirect spring-mvc aspects

在我的应用程序中(使用spring),

我尝试使用spring exposingBean从视图中调用方法。当我尝试从视图中调用方法时,它会抛出错误。我试图捕获HandlerExceptionResolver,但没有运气,我认为它不能由HandlerExceptionResolver处理,因为异常没有被抛给控制器。

所以我尝试了另一种方法来在抛出异常时重定向请求。我认为方面有可能做到这一点。是否可以在从方面抛出异常时重定向请求?

1 个答案:

答案 0 :(得分:4)

正如您所说,当从视图内部抛出异常时,不会调用HandlerExceptionResolver。这些解析器非常专门针对控制器异常。

这里你最好的选择是使用HandlerInterceptor并覆盖afterCompletion方法,该方法将包含视图抛出的异常。您可能能够从此处发送重定向,具体取决于视图是否已提交响应。

我也不知道方面会如何帮助你。不是这项工作的工具。

但是,我的建议是停止在JSP中使用公开的bean。我意识到这很方便,但这是你从使用它时遇到的麻烦。我建议您的控制器汇集视图所需的所有数据,将其粘贴在模型中,然后将其发送到视图中。这样,视图触发异常的危险就会降低,因为它已经拥有了所需的一切。

此外,如果您需要像您一样发送重定向,那么在视图开始执行之前,您确实需要执行此操作。否则,视图层可能会在抛出异常之前开始写出HTTP响应头。如果发生这种情况,那么您将无法发送重定向 - 响应是“已提交”。