问题描述
后台获得3条记录,在首页以FOR循环出下拉框,但是错误。报错信息为:2012-05-2209:25:16,499[com.database.DataBaseOperator]-[INFO]查询语句为:selecta.account_name,c.dic_namebank_name,a.account,b.CAN_WITHDRAWPRICEfromdeveloper_usera,developer_totalsaleslistb,diccwhere1=1anda.developer_id=b.developer_idandc.dic_id=a.bank_nameanda.developer_id=32012-05-2209:25:16,509[com.database.DataBaseOperator]-[INFO]selecta.account_name,c.dic_namebank_name,a.account,b.CAN_WITHDRAWPRICEfromdeveloper_usera,developer_totalsaleslistb,diccwhere1=1anda.developer_id=b.developer_idandc.dic_id=a.bank_nameanda.developer_id=3/n共查询1条记录!2012-05-2209:25:16,509[com.lb.nt.clientAPI.Operator.JsonUtil]-[INFO]正在进行List转换成JSON操作...............2012-05-2209:25:16,509[com.lb.nt.clientAPI.Operator.JsonUtil]-[INFO]将List转换成JSON操作完成!2012-05-2209:25:16,509[com.database.DataBaseOperator]-[INFO]查询语句为:select*fromdictwhere1=1anddic_type_id=92012-05-2209:25:16,521[com.database.DataBaseOperator]-[INFO]select*fromdictwhere1=1anddic_type_id=9/n共查询3条记录!2012-5-229:25:16org.apache.catalina.core.StandardWrapperValveinvoke严重:Servlet.service()forservlet[jsp]incontextwithpath[/develop]threwexception[AnexceptionoccurredprocessingJSPpage/finace/carry_application.jspatline3633:开户人: <inputtype="text"id="holder"value="<%=((JSONObject)jsonArray.get(0)).get("account_name").toString()%>"readonly><br/>34:结账方式:<selectdisabled="disabled">35:<%36:for(inti=0;i<list.size();i++){37:DynaBeandb=(DynaBean)list.get(i);%>38:<optionvalue="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>39:<%}%>Stacktrace:]withrootcausejava.lang.NullPointerExceptionatorg.apache.jsp.finace.carry_005fapplication_jsp._jspService(carry_005fapplication_jsp.java:112)atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:722)atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:722)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)atorg.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)atjava.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)atjava.lang.Thread.run(Thread.java:662)
后台代码为:publicstaticJSONArraygetpaytype(HttpServletRequestrequest){JSONArrayjsonArray=null;Stringsql=("select*fromdictwhere1=1anddic_type_id=9");List<DynaBean>list=DataBaseOperator.queryList(sql.toString());returnjsonArray;
前台页面为:<selectdisabled="disabled"><%for(inti=0;i<list.size();i++){DynaBeandb=(DynaBean)list.get(i);%><optionvalue="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option><%}%></select><br/>
请指教这个循环是错在哪里
解决方案
解决方案二:
Stacktrace:]withrootcause
解决方案三:
你看看你的list里有值没?
解决方案四:
报错不是很明白了吗!jsp36行出现了空指针...既然36行是for循环,那自然i<list.size();有问题。。。
解决方案五:
33:开户人: <inputtype="text"id="holder"value="<%=((JSONObject)jsonArray.get(0)).get("account_name").toString()%>"readonly><br/>34:结账方式:<selectdisabled="disabled">35:<%36:for(inti=0;i<list.size();i++){37:DynaBeandb=(DynaBean)list.get(i);%>38:<optionvalue="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>39:<%}%>Stacktrace:]withrootcausejava.lang.NullPointerException1、没有看到你判断jsonArray是否为空的情况2、也没有看到判断list是否为空的情况3、而你的程序恰好是报了空指针,你说呢,在使用返回的数组或者对象之前还是判断一下是否为null先吧换成这样子试试:<%if(list!=null){DynaBeandb=null;//在外面定义,免得每次做一个循环都需要定义一个,如果jvm不及时释放的话,占用栈空间for(inti=0;i<list.size();i++){db=(DynaBean)list.get(i);%><optionvalue="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option><%}}%>
解决方案六:
自古2楼出真相啊...输出这个List的size,看看有值否?
解决方案七:
引用5楼的回复:
自古2楼出真相啊...输出这个List的size,看看有值否?
这里就是List的size方法出错了,还输出,能输出就不报错了,贼应该是List为null,
解决方案八:
list==null
解决方案九:
该回复于2012-05-22 11:35:35被版主删除
解决方案十:
list在页面就没得到值吧?你这个之前也不判断下。
解决方案十一:
很明显的问题list为null了
解决方案十二:
publicstaticJSONArraygetpaytype(HttpServletRequestrequest){JSONArrayjsonArray=null;Stringsql=("select*fromdictwhere1=1anddic_type_id=9");List<DynaBean>list=DataBaseOperator.queryList(sql.toString());returnjsonArray;jsonArray是空的,JSP页面肯定取不到了