这个错误发生在今下午的测试。想起来就来气。本来写的好好的,刚刚我试下测试的时候没问题。可是让教员一看,问题就有。但是再测试就没了。但是教员已经走了,记录我没做完。没分数!全班就我一个没做完。说实在的那会儿我真的无地自容了,恨不得一下子从楼上跳下去。郁闷死了!
 
 
 
目测这个错误时随机的,目前虽然我解决了,但是我真的还不知道啥时候能出现,再说就算是我改
 
回原来的那样,但是却没有错误了。测试N次都没错、不过我大概能总结一些这个问题会出现的情
 
况。
 
 
情景再现:运用struts2+hibernate+spring开发学生信息管理系统
 
因为SSH集成,所以会用到控制反转/依赖注入,所以我的action处理类里面会出现一些这个东西:
 
 
 
private Students stu;
public Students getStu() {
return stu;
}
public void setStu(Students stu) {
this.stu = stu;
}
public void setStuSer(StudentService stuSer) {
this.stuSer = stuSer;
}
 
 
 
但是呢,我在查询得带所有学员信息,并且放到session里面,别名为“stu”。然后页面使用
 
forEach迭代读取:<c:forEach items="${stu}" var="s"></c:forEach>。
 
 
我想大家应该看出点什么猫腻了,刚开始的时候、也就是说从新部署完成,启动tomcat的时候使用
 
myEclipes内置的浏览器加载数据时它可能会把实体名“stu”,当做是存放在session里面的list的
 
别名“stu”来迭代。那这样的话出错是肯定的。
 

Don't know how to iterate over supplied "item"   这句话描述的太标准了! 

在此感谢:http://wjm9ooy9.blog.163.com/blog/static/20725728420124303639484/

教训:严格区分集合与实体类的名称,特别是在同一页面加载或同一个类处理数据的时候。总之一句话:别搞些让人误解的东西,人如此何况是机器呢,毕竟机器是人造的,无论如何智能的机器终究还是按照指令和代码行动,不会像人一样能思考。