我最近在学习struts和ejb,建立了一个小的程序,目前遇到显示记录时遇到一点问题,请各位帮忙指点:
想实现的功能很简单,调用ejb中的findAll()方法返回数据库中的所有记录,返回到struts的action类里,返回的数据类型collection,然后在jsp中通过<logic:iterate>标签将记录循环显示出来,但运行后总是报错,错误如下:
javax.servlet.ServletException: Cannot create iterator for this
collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageCon
textImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageConte
xtImpl.java:758)
org.apache.jsp.default_jsp._jspService(default_jsp.java:160)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
ava:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292
)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.ja
va:1058)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestP
rocessor.java:451)
org.apache.struts.action.RequestProcessor.processActionForward(RequestP
rocessor.java:401)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
root cause
javax.servlet.jsp.JspException: Cannot create iterator for this
collection
org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:31
0)
org.apache.jsp.default_jsp._jspService(default_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
ava:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292
)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.ja
va:1058)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestP
rocessor.java:451)
org.apache.struts.action.RequestProcessor.processActionForward(RequestP
rocessor.java:401)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
:279)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1420)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:520)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
我换了各种方法来调试,但归根到底还是报这个错。
下面是我的action类和jsp显示的代码,各位帮忙看看,问题出在哪?
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
System.out.println("entering CtrAction.execute()");
CtrForm ctrForm = (CtrForm) form;
CtrEJBFacade cf = new CtrEJBFacade();
Collection c = cf.findAll();
ArrayList array = new ArrayList(c);
System.out.println(array.size());
request.setAttribute("ctrFrom",array);
return (mapping.findForward("default"));
}
下面是jsp的:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html>
<head>
<meta name = "Generator" content = "Easy Struts Xslt
generator for Eclipse (http://easystruts.sf.net).">
<title>记录显示页面</title>
</head>
<body bgcolor="black">
<table border="0" width="100%">
<tr>
<td algin="center">编号</td>
<td algin="center">姓名</td>
<td algin="center">新建</td>
<td algin="center">编辑</td>
<td algin="center">删除</td>
</tr>
<logic:present name="ctrForm"
scope="request"></logic:present>
<logic:iterate name="ctrForm" id="ctr"
type="com.ctr.struts.form.CtrForm">
<tr>
<td algin="center"><bean:write name="ctr" property="id"
/></td>
<td algin="center"><bean:write name="ctr" property="name"
/></td>
<td algin="center">
<html:link page="/ctr.do?action=add">新建</html:link>
</td>
<td algin="center">
<html:link
page="/ctr.do?action=update">编辑</html:link>
</td>
<td algin="center">
<html:link
page="/ctr.do?action=delete">删除</html:link>
</td>
</tr>
</logic:iterate>
</table>
</body>
</html>
我浪费了很多时间,希望有人能指点一下,谢谢了!