+ -
当前位置:首页 → 问答吧 → Cannot forward after response has been committed

Cannot forward after response has been committed

时间:2011-12-06

来源:互联网

这个错误主要是由于两次跳转所引发的 但是我的代码总通过if else 判断后只跳转了一次
private void findAllFlowCardList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String clientId = request.getParameter("clientId");
String beginDate = request.getParameter("beginDate");
String endDate = request.getParameter("endDate");
Date dBeginDate=new Date();
Date dEndDate= new Date();
int pageNo = 1;
if (request.getParameter("pageNo") != null && !"".equals(request.getParameter("pageNo"))) {
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
int pageSize = Integer.parseInt(this.getServletContext().getInitParameter("pageSize"));
try {
if (beginDate != null && !"".equals(beginDate)) {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(beginDate+ " 23:59:59");
}else {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
if (endDate != null && !"".equals(endDate)) {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate + " 23:59:59");
}else {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
} catch (ParseException e) {
e.printStackTrace();
}
FlowCardManager flowcardManager = (FlowCardManager)BeanFactory.getInstance().getServiceObject("FlowCardManager");
PageModel pageModel = flowcardManager.findFlowCardList( pageSize, pageNo, clientId, dBeginDate, dEndDate);
if(pageModel.getTotlePage() != 0)
{
request.setAttribute("model", pageModel);
request.getRequestDispatcher("/flowcard/flow_card_maint.jsp").forward(request, response);
return;
}else
{
RequestDispatcher s= request.getRequestDispatcher("/flowcard/flow_card_maint.jsp");
s.forward(request, response);
return;
}

}


现在发现了引起错误的原因 我写的FlowCardServlet extends BaseServlet
在baseservlet中的service方法 中super.service(request, response); 是这行代码引起了跳转
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
command = request.getParameter("command");
user = (User)request.getSession().getAttribute("user");
// super.service(request, response); // 会引起 Cannot forward after response has been committed 提交两次请求跳转
}

现在就很不解 为啥这行代码会引发 “Cannot forward after response has been committed” ??? 请高手指教

作者: shewen45   发布时间: 2011-12-06

补充:BaseServlet extends HttpServlet

作者: shewen45   发布时间: 2011-12-06

看的有点乱,帮顶了!

作者: cgw1123   发布时间: 2011-12-06

代码多了!也没看明白什么,看看是不是super的影响了,你直接找到super父类的接口,你自己写了类直接实现这个接口看看会不会发生这样的情况了,你莫非你现在的这个父类写!

作者: oyxm0   发布时间: 2011-12-06

热门下载

更多