左边的树有时候出不了,有时候分页标签不能用,先给100分。谁解决了都给他。不够再加。真要疯了。weblogic  换成 tomcat5.0

解决方案 »

  1.   

    weblogic的jsp解析器可能是自己写的.
    tomcat环境下它认为JspWriter out已经关闭了. 看看哪里是不是调用了out.close()之类什么的。
    检查下这个标签里面怎么封装的com.cattsoft.webpub.tag.TreeTag.doStartTag
    或者换个高版本的5.5.x的tomcat试试。 java.io.IOException: Stream closed
    at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
    at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:312)
    at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:337)
    at com.cattsoft.webpub.tag.TreeTag.doStartTag(TreeTag.java:250)
    at org.apache.jsp.sm.login.framan_jsp._jspx_meth_tree_tree_0(framan_jsp.java:112)
    at org.apache.jsp.sm.login.framan_jsp._jspService(framan_jsp.java:81)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
      

  2.   

    我也认为TreeTag的实现有问题。
      

  3.   

       public int doStartTag() {
            getOut();
            String path = getJsPath();
            if (path != null) {
                path += "/";
            }
            try {
                if (path != null) {
                    out.println("<script src=\"" + path + "sps_tree.js\"></script>");
                    out.println("<script src=\"" + path + "tree_menu.js\"></script>");
                    out.println("<script src=\"" + path + "sm_tree.js\"></script>");
                }
                out.println("<script>");
                if (getNodeType() != null) {
                    out.println("var nodeType = \"" + getNodeType() + "\"");
                } else {
                    out.println("var nodeType = \"url\"");
                }
                if (getLeafType() != null) {
                    out.println("var leafType = \"" + getLeafType() + "\"");
                } else {
                    out.println("var leafType = \"url\"");
                }            out.println("var nUrl = \"" + getHref() + "\"");
                out.println("var lUrl = \"" + getHrefLeaf() + "\"");
                out.println("var selectedNode = null;");
                out.println("var tar = \"" + getTarget() + "\"");
                out.println("var  = \"" + getMark() + "\"");
                if (getMenuWidth() != null && !"".equalsIgnoreCase(getMenuWidth())) {
                    out.println("var menu = new tree_menu(" + getMenuWidth() + ");");
                } else {
                    out.println("var menu = new tree_menu(120);");
                }
                out.println("var unfoldAllItem = null;");
                out.println("var foldAllItem = null;");
                if (getInitMenu() != null
                        && ("y".equalsIgnoreCase(getInitMenu())
                                || "true".equalsIgnoreCase(getInitMenu()) || "yes"
                                .equalsIgnoreCase(getInitMenu()))) {
                    out.println("beforeItemAdd();");
                }
                out.println("if(=='login'){");
                out.println("unfoldAllItem = menu.add(\"全部展开\",null,'js',\"smunfold(root,null,-1)\");");
                out.println("foldAllItem = menu.add(\"全部收缩\",null,'js',\"smunfold(root,true,-1)\");");
                out.println("}else{");
                out.println("unfoldAllItem = menu.add(\"全部展开\",null,'js',\"unfold(root,null,-1)\");");
                out.println("foldAllItem = menu.add(\"全部收缩\",null,'js',\"unfold(root,true,-1)\");");
                out.println("}");            if (getInitMenu() != null && "y".equalsIgnoreCase(getInitMenu())
                        || "true".equalsIgnoreCase(getInitMenu())
                        || "yes".equalsIgnoreCase(getInitMenu())) {                out.println("afterItemAdd();");
                }
                out.println("document.body.oncontextmenu=function(){event.returnValue=false;}");
                out.println("document.body.onmousedown=function(){");
                if (getShowMenu() != null
                        && !("".equalsIgnoreCase(getShowMenu()) || "y".equalsIgnoreCase(getShowMenu())
                                || "true".equalsIgnoreCase(getShowMenu()) || "yes"
                                .equalsIgnoreCase(getShowMenu()))) {
                    out.println("  return;");
                }
                out.println(" if(event.button==2){");
                out.println("   beforeMenu();");
                out.println("   menu.show();");
                out.println("   afterMenu();");
                out.println(" }");
                out.println("}");
                out.println("   ");            out.println("</script>");
                String nameForm = this.getFormName();
                if (nameForm == null || "".equals(nameForm)) {
                    nameForm = "formName";
                }
                if ("tempForm".equalsIgnoreCase(nameForm)) {
                    nameForm.concat("z");
                }
                out
                        .println("<form name='tempForm'><input type='hidden' name='temp' value='-1'/><input type='hidden' name='type' value='o'/></form> <form name='"
                                + nameForm + "'  id = 'treeFormName' >");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            String tree = getTree();
            try {
                out.write(tree);            if (getDepth() != null && !"".equalsIgnoreCase(getDepth())) {
                    out.println("<script>");
                    out.println("if(=='login')");
                    out.println("smunfold(root,null," + getDepth() + ");");
                    out.println("else ");
                    out.println("unfold(root,null," + getDepth() + ");");
                    out.println("</script>");
                }
            } catch (IOException ex1) {
                ex1.printStackTrace();
            }
    /*        finally {
             try{
             out.close();
             }catch(IOException e){
             e.printStackTrace();
             }
            }*/
            return EVAL_BODY_INCLUDE;
        }
    帮忙看看。我试看看用tomcat5.5
      

  4.   

    不晓得你的 out 是哪个对象
      如果是 :JspWriter out = pageContext.getOut(); 
    换成:   JspWriter out =  bodyContent.getEnclosingWriter(); 
    试 试...
      

  5.   

    我想知道getOut()的内容。
    我觉得是out对象的实例创建的时候有点问题。
      

  6.   

            if (out == null) {
                out = pageContext.getOut();
            }
            return out;麻烦
      

  7.   

    你可以从两点着手查一下,
    1.out对象里面的response是否为空。
    2.out对象里面的closed状态是否为true。我觉得第一种可能性很大。
      

  8.   

    在tomcat下我貌似以前也碰到过,好像out使用次数过多会出现这样的问题,你想截掉去一部分看看,会不会好了。如果不好,再想其他办法
      

  9.   

    我学得也是out输出的问题,你把所有的out都关了试下,另外可以用别的方式输出啊
      

  10.   

    我觉得是out输出的问题, 关闭out,导入所需的jar