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

求助!求助!!高手帮帮忙,看看错哪里了!!!

<%
if(authors != null){
if(authors.size() != 0){
// for(int i = 0;i<authors.size();i++){
AuthorModel model = authors.get(1);

%>
<tr>
<td width="150"><%=model.getAuthorID()%></td>
<td width="300"><%=model.getFirstName()%></td>
<td width="300"><%=model.getLastName()%></td>
<td width="230"><a href="">修改</a> | <a href="delete.jsp?id=<%=model.getAuthorID() %>">删除</a></td>
</tr>
<%
运行时出现空指针异常,出现在model.getAuthorID(),也就是model为空 --------------------编程问答-------------------- 我在AuthorModel model = authors.get(1);后面加上if(model == null){。。。}把后面的代码框住,程序依然执行下去。 --------------------编程问答-------------------- 为何会出现authors.get(1) 为空呢?
authors的定义如下:
AuthorDAO dao = new AuthorDAO();
List<AuthorModel> authors = dao.queryAll(); --------------------编程问答-------------------- <%
if(authors != null){
if(authors.size() != 0){
// for(int i = 0;i<authors.size();i++){
AuthorModel model = authors.get(1);

if (model != null) {
%>
<tr>
<td width="150"><%=model.getAuthorID()%></td>
<td width="300"><%=model.getFirstName()%></td>
<td width="300"><%=model.getLastName()%></td>
<td width="230"><a href="">修改</a> | <a href="delete.jsp?id=<%=model.getAuthorID() %>">删除</a></td>
</tr>
<%
           }}}}
%>
--------------------编程问答-------------------- if(authors.size() != 0){
// for(int i = 0;i<authors.size();i++){
AuthorModel model = authors.get(1);
你这get(1)?
get(1),n你就确保authors.size()>1呀 --------------------编程问答-------------------- 我觉得你先在后台测一下看看是不是空指针? 在控制台 --------------------编程问答-------------------- if(!authors.isEmpty()){

下面的 get(1) , 你该从0开始。 --------------------编程问答--------------------
引用 5 楼 qqlizhihui 的回复:
我觉得你先在后台测一下看看是不是空指针? 在控制台

什么意思?在index_jsp.java里面已经确定是model为空,加上if(authors.get(1) !=null){里面的代码就不执行了 --------------------编程问答-------------------- model为空那不是没取到值吗,你在.java里测试取到值再传 --------------------编程问答--------------------
引用 8 楼 xiaolong82008 的回复:
model为空那不是没取到值吗,你在.java里测试取到值再传

什么意思,能具体说说吗? --------------------编程问答-------------------- 调试一下,把authors.size() 打印一下,具体描述一下 --------------------编程问答--------------------
引用 10 楼 nizhenfeng 的回复:
调试一下,把authors.size() 打印一下,具体描述一下

autho.size为4 --------------------编程问答-------------------- --------------------编程问答-------------------- if(authors != null && authors.size() > 0){

} --------------------编程问答-------------------- 如果是我测试,我会先把你上面的代码全部删除,只留一句!

<tr>
    <td width="150"><%=authors.getString(1)%></td>
</tr>
看它是什么结果。当然前提条件是你的authors是一个list类型,而且记录至少3条以上! --------------------编程问答-------------------- 给你几个建议:自己先做下测试。。。在你的方法类里面,测试是否去得到数据。。。具体有几条数据。。然后不就找到问题的原因了。 --------------------编程问答-------------------- <%
if(authors != null){
if(authors.size() != 0){
// for(int i = 0;i<authors.size();i++){
AuthorModel model = authors.get(0);  //这里把1改成0,下标是从0开始的。

if (model != null) { //这里改成不为空。
%>
<tr>
<td width="150"><%=model.getAuthorID()%></td>
<td width="300"><%=model.getFirstName()%></td>
<td width="300"><%=model.getLastName()%></td>
<td width="230"><a href="">修改</a> | <a href="delete.jsp?id=<%=model.getAuthorID() %>">删除</a></td>
</tr>
<%
    }
  }//后面还有2个大括号加上
}
%>
--------------------编程问答--------------------
引用 2 楼 caiyunbeiju 的回复:
为何会出现authors.get(1) 为空呢?
authors的定义如下:
AuthorDAO dao = new AuthorDAO();
List<AuthorModel> authors = dao.queryAll();

你看看你你的集合里面是多少条数据?
至少2条才能使用get(1) --------------------编程问答-------------------- authors.get(1);如果author的长度小于2就会出现空指针   --------------------编程问答-------------------- authors.get(0)这个东西是从0开始计算的
authors.get(1)取得是第二条数据
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,