我正在使用SimpleMappingExceptionResolver将所有异常发送到一个视图,以便它们可以被很好地呈现。这个方法有效,但有一个例外情况:如果用户请求页面,然后发送“中止”���我不知道它是如何工作的,但我注意到如果我快速点击HTTP post表单提交按钮,Firefox 7会通知服务器它不再对结果感兴趣),那么当尝试呈现页面或以任何方式编写http响应时,Tomcat 6会引发ClientAbortException。
现在开始出现问题了:SimpleMappingExceptionResolver“捕获”异常并尝试将其“优美地”呈现为html页面。这导致流已关闭异常,这会污染日志文件。(java.lang.IllegalStateException: getOutputStream() has already been called for this response)
迄今为止,我的做法是为“ClientAbortException”注册一个空的jsp页面。但我觉得这是一个hack。另一方面,我想这不是一个罕见的问题,因为我预计它几乎存在于渲染所有异常的每个spring应用程序中。那么,有没有人遇到过这个问题,或者有没有一个不那么hacky的解决方案的想法?
现在开始出现问题了:SimpleMappingExceptionResolver“捕获”异常并尝试将其“优美地”呈现为html页面。这导致流已关闭异常,这会污染日志文件。(java.lang.IllegalStateException: getOutputStream() has already been called for this response)
迄今为止,我的做法是为“ClientAbortException”注册一个空的jsp页面。但我觉得这是一个hack。另一方面,我想这不是一个罕见的问题,因为我预计它几乎存在于渲染所有异常的每个spring应用程序中。那么,有没有人遇到过这个问题,或者有没有一个不那么hacky的解决方案的想法?
<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"
p:defaultErrorView="uncaughtException">
<property name="exceptionMappings">
<props>
<prop key=".MissingServletRequestParameterException">
resourceNotFound
</prop>
<prop key=".ClientAbortException">nothing</prop>
</props>
</property>
</bean>