rednight

0x2B|~0x2B,That's not a question,Just do it.
posts - 32, comments - 14, trackbacks - 0, articles - 0

如果你碰到"Cannot Forward a Response that is Already Committed"这样的错误信息,一定是应用对一次http请求做了多次页面跳转或对response对象做过close后,又去写响应.

这个问题的根本原因由于响应本次请求的Response对象的状态是已提交状态造成的, 它不允许响应提交多次。

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

通常原因:

1. 如果你使用了community的话, community的安全认证和授权如果没有通过,community内部会进行页面跳转。但你的应用(对于workshop应用的话,指的是action)又试图进行页面跳转,就会出现这样的问题。


    /**

     * @jpf:action

     * @jpf:forward name="page" path="page.jsp"

     */

    protected Forward actionMethod()

{

    //如果已经提交了响应,你仍然试图再次进行页面跳转,即再次提交响应,可能出现问题

    //通常可以加一个判断

 

       if (!getResponse().isCommitted()) {

            return new Forward("success");

        } else {

            return null;

        }

    }

 

    protected void beforeAction() {

       SecurityManager.checkAuthorization(getRequest(), getResponse(), config.getString(

                CDConstants.CREATE_TERM_ACTION_NAME, ""));

      //这个调用可能实现了页面跳转,即提交响应

}

 

注意JSP中实现页面跳转后,加return 语句防止继续提交响应:

 

<%

       SecurityManager.checkAuthorization(getRequest(), getResponse(), config.getString(

                CDConstants.CREATE_TERM_ACTION_NAME, ""));

{

     //可能有实现页面跳转逻辑

    ……………forward();

        return;//记得加retrun.

    }

%>

 

2. .如果没有使用community的话,下面情景也会出现这个问题

 

    /**

     * @jpf:action

     * @jpf:forward name="page" path="page.jsp"

     */

    protected Forward actionMethod()

 

//直接操作Response对象写响应

     getResponse().getPrintWriter().println();

    …

/

   // 又执行的页面跳转,也可能出现问题

        return new Forward("index");

    }

Feedback

# re: Cannot Forward a Response that is Already Committed  回复  更多评论   

2009-04-22 09:54 by 千里雪
在java代码中出现这个问题呢
该如何解决啊

# re: Cannot Forward a Response that is Already Committed  回复  更多评论   

2009-04-22 09:55 by 千里雪
有那位大虾解答一下
谢谢啊

# re: Cannot Forward a Response that is Already Committed  回复  更多评论   

2009-04-22 11:26 by 万里冰
在java中如何修改呢
thanks

# re: Cannot Forward a Response that is Already Committed  回复  更多评论   

2009-04-22 17:04 by 万里冰雪
急用啊
有那个大虾帮忙解答一下啊

# re: Cannot Forward a Response that is Already Committed  回复  更多评论   

2012-06-19 09:02 by qingwei
怎么解决。。。

只有注册用户登录后才能发表评论。


网站导航: