我只要在struts里面的action写上这样一段代码就会跑异常,代码如下:
PrintWriter out = response.getWriter();
PrintWriter w = new PrintWriter(out);//输出MAP信息
w.flush();
异常如下:
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed有谁帮忙解释一下为什么会产生这个异常?
PrintWriter out = response.getWriter();
PrintWriter w = new PrintWriter(out);//输出MAP信息
w.flush();
异常如下:
严重: Servlet.service() for servlet action threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed有谁帮忙解释一下为什么会产生这个异常?
解决方法:
在每个forward 方法后加一个return null 试试。
servlet出现这个异常就是这样解决的,struts我还没遇到过这个问题,
你试试吧。
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;import com.hit.persistence.*;public final class ViewSortAction extends Action{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
PrintWriter w = new PrintWriter(out);//输出MAP信息
w.flush();
DynaActionForm searchForm = (DynaActionForm) form;
String keyword = (String)searchForm.get("keyword");
Integer pageId = (Integer)searchForm.get("pageId");
HttpSession session = request.getSession(true);
List sortList=new DBOperate().getMatchSorts(keyword);
if (sortList.size()==0){
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionError("errors.noMatch"));
if (!errors.isEmpty()) {
saveErrors(request, errors);
}
return mapping.findForward("toWrong");
return null;
}
else{
ViewList viewList=new ViewList();
viewList.display (sortList,session,pageId,keyword) ;
return (mapping.findForward("toListSort"));
}
}
}大家看看是为什么报错,谢谢啦,呵呵
其实我就是想知道为什么加上
PrintWriter out = response.getWriter();
PrintWriter w = new PrintWriter(out);//输出MAP信息
w.flush();会报错
具体说说我是怎么向response里面输出的信息,有些不明白