最近完成了一个web项目的开发,持久层用的是hibernate2.18.
可是在运行过程中经常出现下面的错误。错误出现后,刷新一下页面又好了。请问这是怎么回事啊?
javax.servlet.ServletException: com/frame/dao/FormTypeDao
        at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageC
ontextImpl.java:867)
        at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageCon
textImpl.java:800)
        at org.apache.jsp.forms.form_005flist_jsp._jspService(form_005flist_jsp.
java:189)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:311)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
01)

解决方案 »

  1.   

    这个异常说在你的FormTypeDao类中有异常,异常是由pageContextImpl引起的,这是一个页面级的上下文引用对象,也就是说你的jsp页有问题。
    在你的web服务器下查找form_005flist_jsp.java这个文件,定位到189行,看一下有什么问题,我估计是你的参数或变量有问题.
      

  2.   

    看看你PageContextImpl.java:867行是什么?可能是你页面的缓存问题,也可能是你hibernate二级缓存的问题。
      

  3.   

    form_005flist_jsp.java 189 行
    if (pageContext != null) pageContext.handlePageException(t);看不出有什么问题啊
      

  4.   

    184    } catch (Throwable t) {
    185      if (!(t instanceof SkipPageException)){
    186        out = _jspx_out;
    187        if (out != null && out.getBufferSize() != 0)
    188          out.clearBuffer();
    189        if (pageContext != null) pageContext.handlePageException(t);
    190      }
    191    } finally {
    192      if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
    193    }
      

  5.   

    $%#$#$%^你把catch拿来干什么,异常在try里发生地。
      

  6.   

    form表单里的问题!你可以测试一下,到底是哪个输入有问题。
      

  7.   

    下面是
    form_005flist_jsp.java 代码,我总觉的不是这里的原因。应该是com/frame/dao/FormTypeDao里的hibernate缓存的问题
    第一部门:
    public final class form_005flist_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {  private static java.util.Vector _jspx_dependants;  public java.util.List getDependants() {
        return _jspx_dependants;
      }  public void _jspService(HttpServletRequest request, HttpServletResponse response)
            throws java.io.IOException, ServletException {    JspFactory _jspxFactory = null;
        PageContext pageContext = null;
        HttpSession session = null;
        ServletContext application = null;
        ServletConfig config = null;
        JspWriter out = null;
        Object page = this;
        JspWriter _jspx_out = null;
        try {
          _jspxFactory = JspFactory.getDefaultFactory();
          response.setContentType("text/html;charset=utf-8");
          pageContext = _jspxFactory.getPageContext(this, request, response,
           null, true, 8192, true);
          application = pageContext.getServletContext();
          config = pageContext.getServletConfig();
          session = pageContext.getSession();
          out = pageContext.getOut();
          _jspx_out = out;      out.write("\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"); String mid = request.getParameter("mid"); SimpleUser simpleUser = SystemSession.getSimpleUser(session);
    String id = request.getParameter("id");
    String startID = request.getParameter("startID");
    if(startID == null || startID.equals("") || startID.equals("null"))
    startID = "0";      out.write("\r\n\r\n<html>\r\n<head>\r\n<title>");
          out.print(Support.sysName);
          out.write("</title>\r\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/css/main.css\">\r\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/");
          out.print(simpleUser.getStyle());
          out.write("/css/body.css\">\r\n<script language=\"javascript\">\r\n\tfunction trClick(id)\r\n\t{\r\n\t\tif(id && id != \"\")\r\n\t\t{\r\n\t\t\twindow.open('form_manage.jsp?action=browse&id='+id+'&mid=");
          out.print(mid);
          out.write("', '', '");
          out.print(CtopUtil.getEditWindowStyle());
          out.write("');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction browse()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar list = getSelectID();\r\n\t\t\tfor(var i = 0 ; i < list.length ; i++)\r\n\t\t\t{\r\n\t\t\t\ttrClick(list[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\r\n\tfunction add()\r\n\t{\r\n\t\twindow.open('form_manage.jsp?action=add&id=&mid=");
          out.print(mid);
          out.write("','','");
          out.print(CtopUtil.getEditWindowStyle());
          out.write("');\r\n\t}\r\n\r\n\tfunction modify()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar list = getSelectID();\r\n\t\t\tfor(var i = 0 ; i < list.length ; i++)\r\n\t\t\t{\r\n\t\t\t\twindow.open('form_manage.jsp?action=modify&id='+list[i]+'&mid=");
          out.print(mid);
          out.write("','','");
          out.print(CtopUtil.getEditWindowStyle());
          out.write("');\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\r\n\tfunction del()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif(getSelectID().length > 0)\r\n\t\t\t\tform_list.submit();\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formBrowse()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar list = getSelectID();\r\n\t\t\tfor(var i = 0 ; i < list.length ; i++)\r\n\t\t\t{\r\n\t\t\t\twindow.open('form_before_browse.jsp?id='+list[i]+'&mid=");
          out.print(mid);
          out.write("','','');\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formIssue()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar list = getSelectID();\r\n\t\t\tfor(var i = 0 ; i < list.length ; i++)\r\n\t\t\t{\r\n\t\t\t\twindow.location.href = \"");
          out.print(request.getContextPath());
          out.write("/servlet/FormIssue?id=\"+list[i]+\"&type=1&formTypeID=");
          out.print(id);
          out.write("&startID=");
          out.print(startID);
          out.write("&mid=");
          out.print(mid);
          out.write("\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction formStop()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar list = getSelectID();\r\n\t\t\tfor(var i = 0 ; i < list.length ; i++)\r\n\t\t\t{\r\n\t\t\t\twindow.location.href = \"");
          out.print(request.getContextPath());
          out.write("/servlet/FormIssue?id=\"+list[i]+\"&type=2&formTypeID=");
          out.print(id);
          out.write("&startID=");
          out.print(startID);
          out.write("&mid=");
          out.print(mid);
          out.write("\";\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e)\r\n\t\t{\r\n\t\t}\r\n\t}\r\n</script>\r\n</head>\r\n<body>\r\n");
      

  8.   

    第二部分 FormDao formDao = new FormDao();
    FormTypeDao formTypeDao = new FormTypeDao();
    DataGrid dataGrid = new DataGrid(simpleUser);
    dataGrid.setFormName("form_list");
    dataGrid.setFormAction("form_do.jsp?action=del&id="+id);
    dataGrid.setDataGridTitle(Support.getCharacter("p_form_list_2", simpleUser));
    dataGrid.setPageContext(pageContext); Page formPage = null;
    int formCount = 0;
    if(id == null || id.equals("") || id.equals("null"))
    {
    if(startID.equals("0"))
    {
    formPage = formDao.findFormByPage(simpleUser, dataGrid.getCurrentPageNumber()-1, Support.pageSize);
    formCount = formDao.getCount(simpleUser);
    }
    else
    {
    FormType formType = formTypeDao.findFormTypeByID(startID);
    formPage = formDao.findFormByPage(formType, simpleUser, dataGrid.getCurrentPageNumber()-1, Support.pageSize);
    formCount = formDao.getCount(formType, simpleUser);
    }
    }
    else
    {
    FormType formType = formTypeDao.findFormTypeByID(id);
    formPage = formDao.findFormByPage(formType, simpleUser, dataGrid.getCurrentPageNumber()-1, Support.pageSize);
    formCount = formDao.getCount(formType, simpleUser);
    }

    if(formPage != null)
    {
    dataGrid.setRecordSize(formCount);
    List forms = formPage.getResults();

    DataField ids = new DataField("id", null);
    DataField issues = new DataField(Support.getCharacter("p_workflow_track_list_6", simpleUser), "60");
    issues.setSort(false);
    DataField formNames = new DataField(Support.getCharacter("p_form_list_3", simpleUser), "20%");
    DataField userNames = new DataField(Support.getCharacter("p_form_list_4", simpleUser), "20%");
    DataField descriptions = new DataField(Support.getCharacter("p_form_list_5", simpleUser), null);

    for(Iterator iter = forms.iterator() ; iter.hasNext() ; )
    {
    Form form = (Form)iter.next();
    ids.add(form.getFormID().toString());
    String imgAddress = "../style/images/issue.gif";
    if(!form.getIssue().booleanValue())
    imgAddress = "../style/images/stop.gif";
    issues.add("<img src=\""+imgAddress+"\" width=\"16\" height=\"16\">");
    formNames.add(LanguageUtil.getUseLangVarchar(simpleUser, form.getTitle()));
    userNames.add(LanguageUtil.getUseLangVarchar(simpleUser, form.getUser().getRealName()));
    descriptions.add(form.getDescription());
    }
    try
    {
    dataGrid.addDataField(ids).addDataField(issues).addDataField(userNames).addDataField(formNames).addDataField(descriptions);
    }
    catch(FieldDifferException e)
    {
    out.println(e.getMessage());
    }
    catch(NullPointerException e)
    {
    out.println(e.getMessage());
    }

    out.println(dataGrid.createPageCode());


    forms = null;
    dataGrid = null;
    ids = null;
    formNames = null;
    userNames = null;
    issues = null;
    descriptions = null;
    }      out.write("\r\n\r\n</body>\r\n</html>");
        } catch (Throwable t) {
          if (!(t instanceof SkipPageException)){
            out = _jspx_out;
            if (out != null && out.getBufferSize() != 0)
              out.clearBuffer();
            if (pageContext != null) pageContext.handlePageException(t);
          }
        } finally {
          if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
        }
      }
    }
      

  9.   

    不仅是form_005flist_jsp.java出现这样的错误,基本是只要使用hibernate访问数据库,都经常会遇见这样的错误。
    都是com/frame/dao/…………Dao的错误