一个老问题,Cannot create iterator for this collection,谢谢

nagisa 2004-04-06 06:12:27
代码如下,想实现jsp页面显示数据集的功能,但总是提示Cannot create

iterator for this collection

照着例子做的,实在是找不出原因了,请代我看看,谢谢
/////////ViewForm




public class ViewForm extends ActionForm {

private String infoname;
private String infodescribe;
private String infoowner;
private String infoenterdate;
private int infobaknum;
private String infomeno;

public String getinfoname() {
return infoname;
}
public void setinfoname(String infoname) {
this.infoname = infoname;
}
public String getinfodescribe() {
return infodescribe;
}
public void setinfodescribe(String infodescribe) {
this.infodescribe = infodescribe;
}
public String getinfoowner()
{
return infoowner;
}
public void setinfoowner(String infoowner)
{
this.infoowner=infoowner;
}
public String getinfoenterdate()
{
return infoenterdate;
}
public void setinfoenterdate(String infoenterdate)
{
this.infoenterdate=infoenterdate;
}
public int getinfobaknum()
{
return infobaknum;
}
public void setinfobaknum(int infobaknum)
{
this.infobaknum=infobaknum;
}
public String getinfomeno()
{
return infomeno;
}
public void setinfomeno(String infomeno)
{
this.infomeno=infomeno;
}


}





/////////ViewAction


public class ViewAction extends Action
{

public ActionForward execute(ActionMapping mapping,ActionForm

Form,HttpServletRequest request,HttpServletResponse response) throws

SQLException
{
DataSource dataSource;
Connection con=null;
Statement Stmt=null;
ResultSet rs = null;


dataSource=(DataSource) getDataSource(request);
try
{
con=dataSource.getConnection();
} catch (SQLException e)
{
e.printStackTrace();
}
try
{


Stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONC

UR_UPDATABLE);
} catch (SQLException e1)
{

e1.printStackTrace();
}


try
{
rs=Stmt.executeQuery("select * from infolib order by

info_id desc");


} catch (SQLException e2)
{
e2.printStackTrace();
}

ArrayList ViewForm=new ArrayList();

while(rs.next())
{

ViewForm set=new ViewForm();

set.setinfoname(rs.getString("info_name"));
set.setinfodescribe(rs.getString("info_describe"));
set.setinfoowner(rs.getString("info_owner"));
set.setinfoenterdate(rs.getString("info_enterdate"));
set.setinfobaknum(rs.getInt("info_baknum"));
set.setinfomeno(rs.getString("info_meno"));

ViewForm.add("set");
}request.setAttribute("ViewForm", ViewForm);


try
{
Stmt.close();
con.close();
} catch (SQLException e3)
{
e3.printStackTrace();
}


return mapping.findForward("success");

}




/////jsp页面
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ page language="java" contentType="text/html; charset=ISO_8859_1" pageEncoding="ISO_8859_1"%> <logic:iterate id="show" name="ViewForm" scope="request">
....
....
....

<tr >

</tr>

<tr onmouseover="bgColor='dddddd'" onmouseout="bgColor='eeeeee'">
<td><div align="center"><bean:write name="show"

property="infoname"/></div></td>
<td><div align="center"><bean:write name="show"

property="infodescribe"/></div></td>
<td><div align="center"><bean:write name="show"

property="infoowner"/></div></td>
<td><div align="center">.......</div></td>
<td><div align="center">.......</div></td>
<td><div align="center">.......</div></td>
<td><div align="center">.......</div></td>
</tr>


</logic:iterate>

运行后总是出现
javax.servlet.ServletException: Cannot create iterator for this

collection


org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageCon

textImpl.java:867)


org.apache.jasper.runtime.PageContextImpl.handlePageException(PageConte

xtImpl.java:800)


org.apache.jsp.info_002dshow_jsp._jspService(info_002dshow_jsp.java:214

)


org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j

ava:311)


org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301

)


org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nagisa 2004-04-28
  • 打赏
  • 举报
回复
谢啦,综合大家的提示问题还是解决了,散分,虽然很少咯..呵呵
yeshucheng 2004-04-27
  • 打赏
  • 举报
回复
刚才我仔细的看了看,在你的action:
ArrayList ViewForm=new ArrayList();

while(rs.next())
{
....
我认为这样做没有必要,呵呵
这个完全可以删除的,你对collection和vector还没有很好的理解
如果要是按照楼主的这样做,那就要在actionForm中把元素都变成:
String[] xxx
LoveLL810625 2004-04-27
  • 打赏
  • 举报
回复
这个问题我也遇到过,请问楼主解决了吗?
没有的话,请高手帮忙解决一下
nagisa 2004-04-06
  • 打赏
  • 举报
回复
谢谢sagittarius1979(射手爱狮子)
您说问题,还有前文的问题我都有改过了,不过还是那句“Cannot create iterator for this collection”.....

再不行,只好把ArrayList读出来,在页面上显示了,不过那样,又不符合struts的思想了
sagittarius1979 2004-04-06
  • 打赏
  • 举报
回复
这个是指如果你的循环中有text框,那么ActionForm中要用数组来对应.

另外楼主你的ActionForm中大小写要注意
 public String getinfoname() {
return infoname;
}
public void setinfoname(String infoname) {
this.infoname = infoname;
}

->
应该是

 public String getInfoname() {
return infoname;
}
public void setInfoname(String infoname) {
this.infoname = infoname;
}

别粗心了.
nagisa 2004-04-06
  • 打赏
  • 举报
回复
谢谢高手们的帮忙,不过偶还是不懂
在你的action也漏了:Collection
httpServletRequest.getSession().removeAttribute("xxx");
httpServletRequest.getSession().setAttribute("xxx", xxx);
httpServletRequest.setAttribute("viewAFB", viewForm);
-----------------------
是什么意思啊
yeshucheng 2004-04-06
  • 打赏
  • 举报
回复
楼上的: dreamnear(哟哟),这位也说对了
yeshucheng 2004-04-06
  • 打赏
  • 举报
回复
actionFormBean错了
应该写成 :private String[] infoname;
在你的action也漏了:Collection
httpServletRequest.getSession().removeAttribute("xxx");
httpServletRequest.getSession().setAttribute("xxx", xxx);
httpServletRequest.setAttribute("viewAFB", viewForm);
return actionMapping.findForward("view");
dreamnear 2004-04-06
  • 打赏
  • 举报
回复
ViewForm.add("set");---------------> ViewForm.add(set);
ok~
yu_shi_bin 2004-04-06
  • 打赏
  • 举报
回复
ViewForm.add("set");????

67,513

社区成员

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

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