代码: public String select() throws Exception{
Users users = new Users();
users.setName(name);
UsersDAO dao = new UsersDAO();
List list =   dao.findUser(users);
上面的代码,是action部分的查询,这段代码是DB操作(我用的struts2框架)
public List findUser(Users users) {
// 获取一个list对象,来添加所有用户
List list = new ArrayList();
con = DBOpration.openConnection();
try {
String sql = "select s_username, s_name, s_sex, s_collage, s_class, s_departno, s_houseno from stu_users where s_name=?";
pt = con.prepareStatement(sql);
pt.setString(1, users.getName());
rs = pt.executeQuery();
while (rs.next()) {
users.setUsername(rs.getString(1));
users.setName(rs.getString(2));
users.setSex(rs.getString(3));
users.setCollage(rs.getString(4));
users.setClasses(rs.getString(5));
users.setDepartNo(rs.getString(6));
users.setHouseNo(rs.getString(7));
// 把users对象添加到list
list.add(users);现在问题是我用struts的iterator标签循环输出结果,可是却输出了多条一样的最后查询到的users对象,我知道是list的循环问题,可是不知道怎么解决,在线等大侠指导,谢谢了!

解决方案 »

  1.   

    <s:iterator value="list" status="tempList">
      <s:property value="#tempList"/>
    </s:iterator>
      

  2.   

    这样解决不了问题,现在是查出来有几条结果了,但是最后输出的全是最后传入的user对象的属性,把之前的结果都覆盖掉了!
    你的方法输出来的也是一样的~额~。~
      

  3.   

     <s:iterator value="lists" status="tempList" var="list">
      <s:property value="list"/></br>
    </s:iterator>
    刚刚写错了,这个肯就对了的,才实验过
      

  4.   

    这个 var="list" 是无效的属性额。。 而且会报错
      

  5.   

    你struts的版本是好多哦,低版本的
      

  6.   

    用的2.0版本的,这个和我的java代码传参数过去user没关系对么? 显示出来的都是最后一个user对象而且是多条是因为jsp页面这个标签的问题么?
      

  7.   

    低版本好像这样遍历
    <s:iterator value="lists" begin="0" end="#lists.size" id="list">
      <s:property value="#list"/></br>
    </s:iterator>
      

  8.   


    额,这里面的begin和end都无效,
    我的jsp中是这样的
         <s:iterator value="list" >
                    <TR>
                      <TD class=gridViewItem><s:property value="username"/></TD>
                      <TD class=gridViewItem><s:property value="name"/></TD>
                      <TD class=gridViewItem><s:property value="sex"/></TD>
                      <TD class=gridViewItem><s:property value="collage"/></TD>
                      <TD class=gridViewItem><s:property value="classes"/></TD>
                      <TD class=gridViewItem><s:property value="departNo"/></TD>
                      <TD class=gridViewItem><s:property value="houseNo"/></TD>
                    </TR>
                    </s:iterator>
    输出没问题,但是结果却被覆盖了,是这样:
    学号 姓名 性别 学院 班级 公寓 寝号 
      2008011298 2929 dfdf dfasdf dfdf dfd df 
      2008011298 2929 dfdf dfasdf dfdf dfd df 这是标签原因么?
      

  9.   

     <s:iterator value="lists" id="list">
      <TR>
      <TD class=gridViewItem><s:property value="#list.username"/></TD>
      <TD class=gridViewItem><s:property value="#list.name"/></TD>
      <TD class=gridViewItem><s:property value="#list.sex"/></TD>
      <TD class=gridViewItem><s:property value="#list.collage"/></TD>
      <TD class=gridViewItem><s:property value="#list.classes"/></TD>
      <TD class=gridViewItem><s:property value="#list.departNo"/></TD>
      <TD class=gridViewItem><s:property value="#list.houseNo"/></TD>
      </TR>
    </s:iterator>
      

  10.   


    已经试过了,结果还是输出两行一样的值,我认为是传参数造成的,因为在最上面的代码中,如果dao.findUsers()中不传入user参数,输出结果就正常显示了,但是我实在想不到为什么传参数就不对了,难道后一个user会覆盖之前的user吗?
      

  11.   

    问题解决,办法是在while循环中添加new Users()对象, 就可以了~ 还是很感谢a199231的帮助!