救助ssh中的Don't know how to iterate over supplied "items" in <forEach>的问题

lhack 2008-07-03 01:16:12
index.jsp页面的一段代码是
<c:if test="${!empty orgs}">
<c:forEach items="${orgs}" var="org">
<tr bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
<td align="center" vAlign="center">${org.id }</td>
<td align="center" vAlign="center"><a href="org.do?parentid=${org.id}">${org.name }</a></td>
<td align="center" vAlign="center">${org.sn }</td>
<td align="center" vAlign="center">${org.parent.name }</td>
<td align="center" vAlign="center"><a href="#" onclick="del('person.do?method=del&id=${org.id }');">删除</a></td>
</tr>
</c:forEach>
</c:if>
<!-- 在列表数据为空的时候,要显示的提示信息 -->
<c:if test="${empty orgs}">
<tr>
<td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
没有找到相应的记录
</td>
</tr>
</c:if>
我action的代码:
protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
OrgActionForm oaf=(OrgActionForm)form;
request.setAttribute("orgs",orgManager.findOrg(0));
return mapping.findForward("index");
}
业务逻辑的实现类:
public List findOrgs(int parentid) {
if(parentid==0){
return getHibernateTemplate().find("from Orgnization o where o.parent.id is null");
}
return getHibernateTemplate().find("from Orgnization o where o.parent.id = ?", parentid);
}
我想问的是items不是可以用List类型不知道我那里错了.希望个位帮帮忙谢谢.
下面是错误
严重: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:255)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:219)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:137)
at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:227)
at org.apache.jsp.org.index_jsp._jspx_meth_c_005fforEach_005f0(index_jsp.java:221)
at org.apache.jsp.org.index_jsp._jspx_meth_c_005fif_005f0(index_jsp.java:190)
at org.apache.jsp.org.index_jsp._jspService(index_jsp.java:140)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
...全文
15607 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ihss23 2012-08-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

对不起个位了因为本人的看错了,有两个方法一个是 public Orgnization findOrg(int Orgid);
public List findOrgs(int parentid);我调错方法了;在这谢谢个位了
[/Quote]

造成这个错误一般就两个原因:

1.不是集合而是对象。
2.你们集合的GET方法调用错误。很可能是因为你的集合变量名与某个对象变量名同名。
我就是学渣渣 2012-07-26
  • 打赏
  • 举报
回复
遍历的不是集合 而是对象 遇到同样的问题了
匿名旅途 2011-11-28
  • 打赏
  • 举报
回复
遍历不是集合,刚刚也遇到这样的问题

lq282514781 2010-09-05
  • 打赏
  • 举报
回复
杯具接分闪人
qq342959202 2010-08-17
  • 打赏
  • 举报
回复
哈哈 刚刚我也遇到了这个问题! 是不是你的表单名 即struts 配置文件中的form Name 跟你在页面上的需要迭代的重名! 刚刚我就是这个问题
azhqiang 2008-10-09
  • 打赏
  • 举报
回复
回答很好,谢谢
ee4456 2008-07-03
  • 打赏
  • 举报
回复
在我看来,很可能你给页面传的集合为NULL,你先在servlet里把他转成List,遍历输出一下看看?
ee4456 2008-07-03
  • 打赏
  • 举报
回复
提示不知道怎样去循环遍里你给的集合...
因为得不到该集合的iterator对象..
c:foreach总是去得到集合对象的iterator迭代器来遍历你的集合的..

仔细检查你的代码吧

lhack 2008-07-03
  • 打赏
  • 举报
回复
我要遍历的不是对象的属性而是一个列表
public List findOrgs(int parentid) {
if(parentid==0){
return getHibernateTemplate().find("from Orgnization o where o.parent.id is null");
}
return getHibernateTemplate().find("from Orgnization o where o.parent.id = ?", parentid);
}
这个不是定义了他的类型了吗,为什么不可以啊
zidasine 2008-07-03
  • 打赏
  • 举报
回复
你要遍历的貌似不是一个集合而是一个对象,
如果要遍历对象的属性
直接用EL表达式就可以了 不需要 <c:forEach>
直接${orgs.id}
lhack 2008-07-03
  • 打赏
  • 举报
回复
对不起个位了因为本人的看错了,有两个方法一个是 public Orgnization findOrg(int Orgid);
public List findOrgs(int parentid);我调错方法了;在这谢谢个位了
lhack 2008-07-03
  • 打赏
  • 举报
回复
org.apache.jasper.JasperException: An exception occurred processing JSP page /org/index.jsp at line 69

66: </tr>
67: <!-- 列表数据栏 -->
68: <c:if test="${!empty orgs}">
69: <c:forEach items="${orgs}" var="org">
70: <tr bgcolor="#EFF3F7" class="TableBody1" onmouseover="this.bgColor = '#DEE7FF';" onmouseout="this.bgColor='#EFF3F7';">
71: <td align="center" vAlign="center">${org.id }</td>
72: <td align="center" vAlign="center"><a href="org.do?parentid=${org.id}">${org.name }</a></td>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)


root cause

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.org.index_jsp._jspService(index_jsp.java:168)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)

Landor2004 2008-07-03
  • 打赏
  • 举报
回复
到你的action里面用debug跟中一下看看你说的orgs,
也就是orgManager.findOrg(0)方法返回的到底是不是一个java.util.List类型

不是的话就会报错,jstl解析不了

67,513

社区成员

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

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