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

求助 jsp 查询mysql nullpointer exception错误 空指针错误 代码如下 第45行

package com.haiersoft.sta.action; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import com.haiersoft.sta.dao.StaDao; import com.haiersoft.sta.form.QueryForm; import com.haiersoft.sta.vo.QueryResult; import com.haiersoft.sta.vo.Vo; public class QueryAction extends DispatchAction { public ActionForward query(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { StaDao sta = new StaDao(); //得到包含mac、ver和date的List List qList = sta.getNewQuery(); QueryForm qf = (QueryForm)form; //查询页面上输入的mac地址 String macName = qf.getMac().toLowerCase(); //每一条的查询结果 QueryResult qr = null; //盛放查询结果的List List<QueryResult> ls = new ArrayList<QueryResult>(); for (int i = 0; i <qList.size(); i++) { String mac = ((Map)qList.get(i)).get("MAC").toString().toLowerCase(); String ver = ((Map)qList.get(i)).get("VER").toString(); String date = ((Map)qList.get(i)).get("INSERTTIME").toString(); //如果能查到包含输入内容的mac地址 if(mac.contains(macName)) { //将mac、ver和加入到QueryResult对象中去 qr = new QueryResult(); qr.setMac(mac); qr.setVer(ver); qr.setDate(date); ls.add(qr); } } //将查询结果放入request request.setAttribute("qr", ls); return mapping.findForward("query"); } }
答案:我这里的45行代码是String date = ((Map)qList.get(i)).get("INSERTTIME").toString();,不知道对不对。
看了你的这段代码,觉得问题虽然不大,但还是有的,主要是变量的非空判断上有问题。如List qList = sta.getNewQuery();实际情况下,将不确定sta.getNewQuery();方法是否能够返回一个非空的list,如果返回null,下文中for (int i = 0; i <qList.size(); i++) 将抛出空指针异常。但实际上,你的这个问题不是由此处导致的,而是由循环体内的String date = ((Map)qList.get(i)).get("INSERTTIME").toString();导致的。看你的注释
		//得到包含mac、ver和date的List
		List qList = sta.getNewQuery();
这里的qList中的对象似乎本来就不包含INSERTTIME字段对应的值,那么你在45行代码处调用((Map)qList.get(i))取qList中第i个对象,并强制转换到Map类型,然后.get("INSERTTIME"),到此处,仍然是不会有问题的,但是你却偏偏又调用了.toString();因为.get("INSERTTIME")返回了null,在null上调用任何方法,都是要抛出空指针异常的,这也是你遇到的问题的关键。

上一个:jsp时间显示的问题!代码如下
下一个:哪位帮我看看用JSP写的代码是哪出错了

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,