java.lang.IllegalStateException: Cannot forward a response that is already commi

huqqdyx 2011-11-08 05:25:04
<a target="_blank" href="<%=dt.getUrl() %>" ></a>
在后台生成连接地址地址,但是访问时报错,不知道什么原因,请各位大侠帮帮忙。
<2011-11-8 下午05时10分33秒 CST> <Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@7aacc1 - appName: 'WebRoot', name: 'WebRoot', context-path: '/WebRoot'] Servlet failed with Exception
java.lang.IllegalStateException: Cannot forward a response that is already committed
at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:110)
at com.doone.sys.security.filter.SecurityFilter.doFilter(SecurityFilter.java:286)
at com.doone.sys.security.filter.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:148)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at com.doone.comm.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:105)
Truncated. see log file for complete stacktrace
...全文
432 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
arikara 2011-11-08
  • 打赏
  • 举报
回复
那么就是这个target="_blank" 出问题了
nizhicheng 2011-11-08
  • 打赏
  • 举报
回复
这个问题的根本原因由于响应本次请求的Response对象的状态是已提交状态造成的, 它不允许响应提交多次。

什么时候Response对象的状态变成已提交状态:当你的应用已经实现了页面跳转逻辑。

shine333 2011-11-08
  • 打赏
  • 举报
回复
你的Action/Servlet已经输出了内容到客户端,不能再forward到其他资源。

举个例子,比如资源下载,如果Struts1,因为你的Action已经向response输出,并且这些东西已经到了客户端(没法再改写Http Response Header),因此你的execute方法只能用return null而不是其他forward。

同理,S2的情况下,需要专门配置,而不是像之前那样forward.

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧