下面是我的表里面数据的显示页面lookwater.jsp的部分代码:
 {0} String a=session.getAttribute("residents_num").toString();
  WegDAOImpl wegg=new WegDAOImpl();
  List<WEG> weg = wegg.queryNewsByNum(a);
   %>
   <br/>
  
<table border="0" align="center" width="600px" >
<tr>
<td>月份</td>
<td>

</td>
<td>

</td>
<td>气</td>
</tr>


<%
for (int i = 0; i < weg.size(); i++) {
WEG weg2 = weg.get(i);
%>
<tr>
<td>
<%=weg2.getId() %>

</td>
<td>
<%=weg2.getWEGMonth() %>

</td>
<td>
<%=weg2.getWater()%>
</td>
<td>
<%=weg2.getElectric()%>
</td>
<td>
<%=weg2.getGas()%>

</td>

</tr> <%
}
%>

</table>  
代码中的 List<WEG> weg = wegg.queryNewsByNum(a);
queryNewsByNum(a)能够正确将表中的数据封装到List<WEG> 对象中(因为我测试时通过while(rs.next()){

weg.setId(rs.getInt("id"))能正确看到其所有的数据正确输出),我数据表里面有5条数据,但我在显示页面lookwater.jsp中却只能输出最新插入的数据,而且重复5次输出最新插入的数据。
 
高手,这是为什么?

解决方案 »

  1.   


    WEG e = null;
    while(rs.next()){   e = new WEG();//应该在循环里创建对象
    }
      

  2.   

    嘿嘿,不懂java,和jsp,友情帮定!
      

  3.   

    2楼,不需要再new,list面已经有对象了.楼主调试一下,是否您那个list对象里又对新的五个,再检查你的dao实现是否有问题,这个代码没看出什么问题
      

  4.   

    把循环那段代码用下面的替换一下打印看一下数据是否还重复,如果是
    则DAO里的查询方法queryNewsByNum可能有问题。
      <% for (int i = 0; i < weg.size(); i++) {
          out.println("Id="+weg.get(i).getId()+"Month="+weg.get(i).getWEGMonth()
            +"Water="+weg.get(i).getWater()+"Gas="+weg.get(i).getGas());
         }
      %>
      

  5.   


    这位大哥已经说清楚了。你lz你的封装list的代码出问题,没有在循环里new WEG
      

  6.   

    首先先在List<WEG> weg = wegg.queryNewsByNum(a);
    之后遍历weg,看看list中的五条记录是否重复
      

  7.   

      List<WEG> weg = wegg.queryNewsByNum(a);
      楼主看不看weg这个list里面是不是有5条重复的数据,如果有的话,那可能就是你前面实现dao层有问题。
        看这代代码没什么错误的
      

  8.   

    唉,这样的问题,百分之一百零一是取数据的时候是这样的
    WEG e = new WEG();
    while(rs.next()){     //每次都是使用e来存数据,所以才会导致所有的记录都是最后的那条结果,因为只有一个WEG对像.
    }实际应该是WEG e = null;
    while(rs.next()){    e = new WEG();//每次创建新对象.
    }
      

  9.   


    呵呵,
    顶了good luck