这死循环,闹的我头都大了,大家看看遇见过这么怪的事没~~三表联查的结果

awers 2005-01-02 02:30:36
我有一个方法,根据输入的类别ID,返回一个Collection:
public Collection getIndexInfo(int categoryID)

这个容器里的元素,是个三表联查的结果;

分别将从库里得到的值,添加进三个相关表set && get类里的属性了;

方法的大概样子是这样的:
-----------------------
List ret = new ArrayList();
...
...
//得到三表联查后的结果
while(rst.next()){
Category category = new Category();
Freight freight = new Freight();
Warehouse wrhs = new Warehouse();
//这3个是set && get的类

category.setCategoryName(rst.getString(1));
freight.setFreightName(rst.getString(2));
freight.setFreightUnit(rst.getString(3));
wrhs.setStoreAmount(rst.getInt(4));
//得到三个表里的数据

ret.add(category);
ret.add(freight);
ret.add(warehouse);
//将得到的这些数据添进List中
}
return ret;
//将所有的对象添加进List里
-----------------------------

编译完后,到页面应用时,问题就有意思了:
我定义一个接收对象的Collection,再将得到的所有对象里的所有属性,迭代出来:
<jsp:useBean id="wrhs" class="mypackage.Warehouseman" scope="page"/>
<%
Collection temp = wrhs.getIndexInfo(1);
Iterator it = temp.iterator();
//将所有得到的元素迭代出来
Category ct = (Category)it.next();
Freight ft = (Freight)it.next();
Warehouse wh = (Warehouse)it.next();

while(it.hasNext()){ // <------------------就是这行,无限死循环!!!
out.println(ct.getCategoryName());
out.println(ft.getFreightName());
out.println(ft.getFreightUnit());
out.println(wh.getStoreAmount());
//将每个元素中所需要的属性打印
}
>%
---------------------------------
方法在编译,运行时均无任何错误,就是拿到JSP页里一运行,就无限打印……直到CPU 100%……
用temp.size(),得出获得的元素个数是3个,而且不做while()时,单独打印第一个元素的数据,也可以正确显示该元素的所有属性;

快崩溃了……HELP……
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wadsunglow 2005-01-02
  • 打赏
  • 举报
回复
同意 darkula(流浪街头的呆子)
awers 2005-01-02
  • 打赏
  • 举报
回复
解决了,让容器提元素的部分绕晕了~~~~谢谢各位了 :)
AHUA1001 2005-01-02
  • 打赏
  • 举报
回复
把你容器的代码拿来让大家看看吧。
darkula 2005-01-02
  • 打赏
  • 举报
回复
Category ct = (Category)it.next();
Freight ft = (Freight)it.next();
Warehouse wh = (Warehouse)it.next();

这3行,应该写在while()循环里面去,你这样写等于永远显示第一个对象
vgvg 2005-01-02
  • 打赏
  • 举报
回复


while(it.hasNext()){ // <------------------就是这行,无限死循环!!!
out.println(ct.getCategoryName());
out.println(ft.getFreightName());
out.println(ft.getFreightUnit());
out.println(wh.getStoreAmount());
//将每个元素中所需要的属性打印
Category ct = (Category)it.next();
Freight ft = (Freight)it.next();
Warehouse wh = (Warehouse)it.next();
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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