代码是这样的,查了很多资料,是说writer不能跟OutputStream一起用,但是我没有一起用
public void activateExternalPage(Object[] obj, IRequestCycle cycle) {
HttpServletResponse req = cycle.getRequestContext().getResponse();
this.setNode(cycle.getRequestContext().getParameter("node"));
if (this.getNode().equals("extroot")) {
this.nodes = new ArrayList<TreeNode>();
this.nodes.add(getRoot());
} else {
this.nodes = getChildNodes();
}
System.out.println(this.getNode());
req.setHeader("Pragma", "No-Cache");
req.setHeader("Cache-Control", "No-Cache");
req.setDateHeader("Expires", 0); Configuration cfg = new Configuration(); cfg.setServletContextForTemplateLoading(cycle.getRequestContext()
.getServlet().getServletContext(), "WEB-INF/templates"); PrintWriter out = null;
try {
Map root = new HashMap();
root.put("nodes", this.getNodes());
Template t = cfg.getTemplate("AjaxTreeNode.ftl");
req.reset();
req.setCharacterEncoding("utf-8");
out = req.getWriter();
try {
t.process(root, out);
} catch (TemplateException e) {
e.printStackTrace(); }
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close(); } catch (Exception e) {
e.printStackTrace();
}
}
}
}异常:[code=INIFile]=[WARN ] 2008-05-27 09:47:57,100 method:org.apache.tapestry.engine.AbstractEngine.reportException(AbstractEngine.java:508)
Exception during post-request cleanup.
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
at org.apache.tapestry.request.ResponseOutputStream.open(ResponseOutputStream.java:184)
at org.apache.tapestry.request.ResponseOutputStream.forceFlush(ResponseOutputStream.java:144)
at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:945)
at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
at org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
**********************************************************
Exception during post-request cleanup.
Session id: null
Client address: 127.0.0.1Exceptions:java.lang.IllegalStateException: getWriter() has already been called for this response
org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
org.apache.tapestry.request.ResponseOutputStream.open(ResponseOutputStream.java:184)
org.apache.tapestry.request.ResponseOutputStream.forceFlush(ResponseOutputStream.java:144)
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:945)
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)**********************************************************[/code]
public void activateExternalPage(Object[] obj, IRequestCycle cycle) {
HttpServletResponse req = cycle.getRequestContext().getResponse();
this.setNode(cycle.getRequestContext().getParameter("node"));
if (this.getNode().equals("extroot")) {
this.nodes = new ArrayList<TreeNode>();
this.nodes.add(getRoot());
} else {
this.nodes = getChildNodes();
}
System.out.println(this.getNode());
req.setHeader("Pragma", "No-Cache");
req.setHeader("Cache-Control", "No-Cache");
req.setDateHeader("Expires", 0); Configuration cfg = new Configuration(); cfg.setServletContextForTemplateLoading(cycle.getRequestContext()
.getServlet().getServletContext(), "WEB-INF/templates"); PrintWriter out = null;
try {
Map root = new HashMap();
root.put("nodes", this.getNodes());
Template t = cfg.getTemplate("AjaxTreeNode.ftl");
req.reset();
req.setCharacterEncoding("utf-8");
out = req.getWriter();
try {
t.process(root, out);
} catch (TemplateException e) {
e.printStackTrace(); }
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close(); } catch (Exception e) {
e.printStackTrace();
}
}
}
}异常:[code=INIFile]=[WARN ] 2008-05-27 09:47:57,100 method:org.apache.tapestry.engine.AbstractEngine.reportException(AbstractEngine.java:508)
Exception during post-request cleanup.
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
at org.apache.tapestry.request.ResponseOutputStream.open(ResponseOutputStream.java:184)
at org.apache.tapestry.request.ResponseOutputStream.forceFlush(ResponseOutputStream.java:144)
at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:945)
at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
at org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
**********************************************************
Exception during post-request cleanup.
Session id: null
Client address: 127.0.0.1Exceptions:java.lang.IllegalStateException: getWriter() has already been called for this response
org.apache.catalina.connector.Response.getOutputStream(Response.java:579)
org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:183)
org.apache.tapestry.request.ResponseOutputStream.open(ResponseOutputStream.java:184)
org.apache.tapestry.request.ResponseOutputStream.forceFlush(ResponseOutputStream.java:144)
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:945)
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:198)
org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:327)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)**********************************************************[/code]
解决方案 »
- 用jsonObject转换json字符时能否过滤bean中空值节点?
- 请问jsp页面无刷新提交表单值
- java运行Runtime.getRuntime().exec命令权限问题
- jsp+access 查询不出结果
- 50求救,运行速度问题,快了立即给分
- 如何判断resultset结果集为空
- 我是东东树的妹妹,有问题要问大家.关于表单递交后,增加记录到数据库
- jsp中bean的使用!哪位大侠给点指点!
- Re: 谁说单独用jsp server无法实现上传?
- 求助,前后端交互,这样才能学的不费劲
- 各位高手你帮忙 urlrewrite 问题
- windows+tomcat jsp正常; linux+tomcat jsp中文乱码 如何 解决?
PrintWriter out = req.getWriter();你看看构建out时,用javax.servlet.ServletResponse.getWriter();试试