为什么我的Logic:iterate只重复显示结果集中的一条记录

zyme007 2007-03-14 04:50:33
结构:struts+spring
我的目的是通过action查询数据库的一张表,把结果显示在界面的table中
结果查询到13条记录,界面上也是显示13条记录,但是却是一条记录重复地显示了13次
把代码贴出来,大家帮忙看看

===================action中的代码如下:==========================
List<UserInfo> userList = new ArrayList<UserInfo>();
sql = "SELECT usercode,username,tel from userinfo";

rs = myJdbcTemplate.queryForRowSet(sql.toString());
myUserInfo = new UserInfo();
while (rs.next())
{
myUserInfo.setUserCode(rs.getString("usercode"));
myUserInfo.setUserName(rs.getString("username"));
myUserInfo.setTel(rs.getString("tel"));
userList.add(myUserInfo);
}

request.setAttribute("userList", userList);

===================jsp中的代码如下:==========================
<div id=TableContainer height='50'>
<table id=termInfoTable border=1 valign='top' bordercolor="#993366"
style="border-collapse: collapse; table-layout: fixed"
onclick="select()" onMouseover="changeto('lightgreen')"
onMouseout="changeback('white')">
<tbody>
<tr background="images/bk.jpg">
<th valign="bottom" >
用户编码
</th>
<th valign="bottom" >
用户名称
</th>
<th valign="bottom" >
电话号码
</th>
</tr>
<logic:iterate name='userList' id='userInfo' >
<tr>
<td>
<bean:write name='userInfo' property='userCode' />
</td>
<td>
<bean:write name='userInfo' property='userName' />
</td>
<td>
<bean:write name='userInfo' property='tel' />
</td>
</tr>
</logic:iterate>
</tbody>
</table>
</div>
...全文
370 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyme007 2007-03-15
  • 打赏
  • 举报
回复
没人给我个解释吗?
zyme007 2007-03-15
  • 打赏
  • 举报
回复
问题是出在这里,但我还有点疑问,虽然UserInfo的对象只有一个,但在while (rs.next())中myUserInfo.setXXX执行后,myUserInfo的值不是都已经变了吗?userList.add(myUserInfo);应该插入的值也是不一样的才对啊。
cseu 2007-03-15
  • 打赏
  • 举报
回复
楼上imA(男的不会,会的不男)说得对
imA 2007-03-15
  • 打赏
  • 举报
回复
再你执行set方法后,所有你以前add到list中的myUserInfo对象的值也变成最新的了,因为根本就是一个myUserInfo对象
darkblue111 2007-03-14
  • 打赏
  • 举报
回复
楼上的说的太对了,就是这个问题,改了保证运行ok
www203 2007-03-14
  • 打赏
  • 举报
回复
楼上的有道理
局部变量和全局变量的问题
每次都加了相同的东西到list里面去了
awusoft 2007-03-14
  • 打赏
  • 举报
回复
while (rs.next())
{
myUserInfo.setUserCode(rs.getString("usercode"));
myUserInfo.setUserName(rs.getString("username"));
myUserInfo.setTel(rs.getString("tel"));
userList.add(myUserInfo);
}
只有一个myUserInfo对像,应该把创建的语句放在里边,每一次都是创建一个新的对像。

while (rs.next())
{
myUserInfo = new UserInfo();=====》注意一行嘛,创建新的对像
myUserInfo.setUserCode(rs.getString("usercode"));
myUserInfo.setUserName(rs.getString("username"));
myUserInfo.setTel(rs.getString("tel"));
userList.add(myUserInfo);
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧