当前位置:编程学习 > JAVA >>

请问这个循环是错哪了呢?

后台获得3条记录,在首页以FOR循环出下拉框,但是错误。
报错信息为:
2012-05-22 09:25:16,499 [com.database.DataBaseOperator]-[INFO] 查询语句为:select a.account_name, c.dic_name bank_name, a.account, b.CAN_WITHDRAWPRICE from developer_user a, developer_totalsaleslist b,dic c where 1 = 1 and a.developer_id = b.developer_id and c.dic_id = a.bank_name and a.developer_id = 3
2012-05-22 09:25:16,509 [com.database.DataBaseOperator]-[INFO] select a.account_name, c.dic_name bank_name, a.account, b.CAN_WITHDRAWPRICE from developer_user a, developer_totalsaleslist b,dic c where 1 = 1 and a.developer_id = b.developer_id and c.dic_id = a.bank_name and a.developer_id = 3/n共查询1条记录!
2012-05-22 09:25:16,509 [com.lb.nt.clientAPI.Operator.JsonUtil]-[INFO] 正在进行List转换成JSON操作...............
2012-05-22 09:25:16,509 [com.lb.nt.clientAPI.Operator.JsonUtil]-[INFO] 将List转换成JSON操作完成!
2012-05-22 09:25:16,509 [com.database.DataBaseOperator]-[INFO] 查询语句为:select  * from dic t where 1=1 and dic_type_id =9
2012-05-22 09:25:16,521 [com.database.DataBaseOperator]-[INFO] select  * from dic t where 1=1 and dic_type_id =9/n共查询3条记录!
2012-5-22 9:25:16 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [jsp] in context with path [/develop] threw exception [An exception occurred processing JSP page /finace/carry_application.jsp at line 36

33:                       开户人:  <input type="text" id="holder" value="<%=((JSONObject)jsonArray.get(0)).get("account_name").toString()%>" readonly> <br/>
34:                       结账方式:<select disabled="disabled">
35:                        <% 
36:                        for(int i=0;i<list.size();i++){
37:                        DynaBean db = (DynaBean)list.get(i);%>
38:                        <option value="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>
39:                         <%}%>


Stacktrace:] with root cause
java.lang.NullPointerException
at org.apache.jsp.finace.carry_005fapplication_jsp._jspService(carry_005fapplication_jsp.java:112)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

后台代码为:
public static JSONArray getpaytype(HttpServletRequest request){
JSONArray jsonArray = null ;
String sql = ("select  * from dic t where 1=1 and dic_type_id =9");
List<DynaBean> list = DataBaseOperator.queryList(sql.toString());
return jsonArray;


前台页面为:
<select disabled="disabled">
                       <% 
                       for(int i=0;i<list.size();i++){
                       DynaBean db = (DynaBean)list.get(i);%>
                       <option value="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>
                        <%}%>
                      
                      </select><br/>

请指教这个循环是错在哪里 --------------------编程问答-------------------- Stacktrace:] with root cause --------------------编程问答-------------------- 你看看你的list里有值没? --------------------编程问答-------------------- 报错不是很明白了吗!
jsp 36行出现了空指针...
既然36行是for循环,那自然  i<list.size();  有问题。。。 --------------------编程问答-------------------- 33:                       开户人:  <input type="text" id="holder" value="<%=((JSONObject)jsonArray.get(0)).get("account_name").toString()%>" readonly> <br/>
34:                       结账方式:<select disabled="disabled">
35:                           <% 
36:                               for(int i=0;i<list.size();i++){
37:                                   DynaBean db = (DynaBean)list.get(i);%>
38:                        <option value="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>
39:                         <%}%>


Stacktrace:] with root cause
java.lang.NullPointerException


1、没有看到你判断 jsonArray是否为空 的情况
2、也没有看到 判断 list是否为空的情况
3、而你的程序恰好是报了空指针 ,你说呢,在使用返回的数组或者对象之前还是判断一下是否为null先吧

换成这样子试试:

<% 
  if (list != null) {
  DynaBean db = null  ; //在外面定义, 免得每次做一个循环都需要定义一个,如果jvm不及时释放的话,占用栈空间
  for(int i=0;i<list.size();i++){
db = (DynaBean)list.get(i);
%>
<option value="<%=db.get("dic_id").toString()%>"><%=db.get("dic_name").toString()%></option>
                        
<%
  }
     }
%>
--------------------编程问答-------------------- 自古2楼出真相啊...

输出这个List的size,看看有值否? --------------------编程问答--------------------
引用 5 楼  的回复:
自古2楼出真相啊...

输出这个List的size,看看有值否?

这里就是List的size方法出错了, 还输出,能输出就不报错了,贼应该是List为null, --------------------编程问答-------------------- list == null --------------------编程问答-------------------- --------------------编程问答-------------------- list在页面就没得到值吧?你这个之前也不判断下。 --------------------编程问答-------------------- 很明显的问题list为null了
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,