2009-07-09 14:26:15,401 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/frameweb].[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.common.thirdMenu_jsp._jspService(thirdMenu_jsp.java:54)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
2009-07-09 14:26:15,401 ERROR [STDERR] org.apache.jasper.JasperException: Exception in JSP: /common/thirdMenu.jsp:129: <%
10: WFTemplateManager templateMgr = new NFTemplateManagerImpl();
11: String process = request.getParameter("process");
12: List templateList =  templateMgr.getAllCreateTplByUserId(process,session.getAttribute("userid").toString());
13: List personList = new ArrayList();
14: List groupList = new ArrayList();
15: for(int i=0; i < templateList.size(); i++) {
------------------------------------
WFTemplateManager是一个interface
接口:public interface WFTemplateManager
实现类:public class NFTemplateManagerImpl implements WFTemplateManager在什么情况下会出现这个NullPointerException?此现象偶然出现。。

解决方案 »

  1.   

    List templateList =  templateMgr.getAllCreateTplByUserId(process,session.getAttribute("userid").toString()); 
      

  2.   

    session.getAttribute("userid").toString()
    session过期就出现!
      

  3.   

    at org.apache.jsp.common.thirdMenu_jsp._jspService(thirdMenu_jsp.java:54)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    标数字行数的地方出现空值了
      

  4.   

    我知道是出现NULL了,但问题是
    10: WFTemplateManager templateMgr = new NFTemplateManagerImpl();
    这个templateMgr 不可能是NULL,
    但我们这个系统没有对SESSION进行控制,不存在SESSION过期的现象。。所以还没找到原因。。
      

  5.   

    关于这种导常最好用System.out.println();
      

  6.   


    还有templateList.size(),使用之前为什么不做非空检查?
    少些这两句就真这么省事了?
      

  7.   

    null,设置断点检查下哪里有空值出现,然后再在那里处理下
      

  8.   

    session.getAttribute("userid").toString();
    session 过期就出现;
    你应该通过超链接把userid的值传个来,
    通过int userid=Integer.paramer(request.getAttribute("userid"));
      

  9.   

    session.getAttribute("userid").toString()多余的东西。
    你的getAllCreateTplByUserId()参数是什么啊!!我看着像根据主键来做查询的哦!那么你的这个参数session.getAttribute("userid").toString()又有什么意义呢!提取出来是String的啊!你的 process 可能取值为空!如果 你的项目不对Session做任何处理的话!它默认30分钟。如果还有问题LZ你可能需要贴代码了
      

  10.   

    String process = request.getParameter("process"); 
    估计是process没有取到值
      

  11.   

    9: <% 
    10: WFTemplateManager templateMgr = new NFTemplateManagerImpl(); 
    11: String process = request.getParameter("process"); 
    System.out.println("-------------------process ="+process+"----------------");
    System.out.println("-------------------userid ="+session.getAttribute("userid")+"----------------");

    12: List templateList =  templateMgr.getAllCreateTplByUserId(process,session.getAttribute("userid").toString()); 
    13: List personList = new ArrayList(); 
    14: List groupList = new ArrayList(); 
     
    楼主加上上面红色两句,看看它在哪里报错,如果在第二个输出错的话,那就是你拿不到userid的值。
      

  12.   

    1:代码写的真难看,Jsp里面套Java。
    2:Debug一下,现在Eclipse,netBean,Idea主流IDE都支持jsp单步调试。