Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

c:foreach loop and f:subviews

843844Nov 19 2007 — edited Nov 20 2007
Hello!

Is it possible to have f:subview inside c:foreach loop and use iteration variables inside the subview.

My code:
...
							<c:forEach var="question"
								items="#{questionGroup.questionResultList}">
								<h:outputText value="#{question.name}"></h:outputText>
								
								<h:panelGrid border="0" columns="2" cellspacing="0"
									cellpadding="0" styleClass="table3" columnClasses="fcol1,fcol2">

									<c:if test="${questionGroup.inScoreGroupP}">
									<f:subview id="question-vertical">
										<c:import url="question-vertical.jsp"></c:import>
									</f:subview>
									</c:if>

									<c:if test="${questionGroup.inScoreGroupC}">
									<f:subview id="question-horisontal">
										<c:import url="question-horisontal.jsp"></c:import>
									</f:subview>
									</c:if>

								</h:panelGrid>
								<hr width="95%" size="1" color="#E6E6E6">
							</c:forEach>
...
question-vertical.jsp:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page language="java" contentType="text/html; charset=utf-8"%>

<f:subview id="question-horisontal">

	<h:selectOneRadio layout="lineDirection" converter="LongConverter"
		value="#{question.answerId}">
		<c:forEach var="answer" items="#{question.answerList}">
			<f:selectItem escape="false"
				itemLabel="#{answer.name}<br/>#{answer.description}"
				itemValue="#{answer.id}" />
		</c:forEach>
	</h:selectOneRadio>

	<h:panelGrid cellpadding="0" border="0" cellspacing="0"
		styleClass="textpan">
		<h:outputText value="&#1050;&#1086;&#1084;&#1084;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1081;/comment"></h:outputText>
		<h:inputTextarea value="#{answer.comment}"
			style="width:100%; height:100%;"></h:inputTextarea>
	</h:panelGrid>


</f:subview>
I tried this and get this error:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:535)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
	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)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	frontend.UserSessionFilter.doFilter(UserSessionFilter.java:167)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.servlet.ServletException: javax.servlet.jsp.JspException: 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:851)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:112)
	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:387)
	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)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	frontend.UserSessionFilter.doFilter(UserSessionFilter.java:167)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: 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:851)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
	org.apache.jsp.form_jsp._jspService(form_jsp.java:129)
	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:387)
	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.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	org.apache.jsp.index_jsp._jspx_meth_c_005fimport_005f1(index_jsp.java:1112)
	org.apache.jsp.index_jsp._jspx_meth_f_005fsubview_005f1(index_jsp.java:1078)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f5(index_jsp.java:961)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f4(index_jsp.java:908)
	org.apache.jsp.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:354)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:103)
	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:387)
	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)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	frontend.UserSessionFilter.doFilter(UserSessionFilter.java:167)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

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:855)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
	org.apache.jsp.question_002dvertical_jsp._jspService(question_002dvertical_jsp.java:87)
	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:387)
	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.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	org.apache.jsp.form_jsp._jspx_meth_c_005fimport_005f0(form_jsp.java:798)
	org.apache.jsp.form_jsp._jspx_meth_f_005fsubview_005f1(form_jsp.java:763)
	org.apache.jsp.form_jsp._jspx_meth_c_005fif_005f1(form_jsp.java:723)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f3(form_jsp.java:680)
	org.apache.jsp.form_jsp._jspx_meth_c_005fforEach_005f1(form_jsp.java:600)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f2(form_jsp.java:554)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f1(form_jsp.java:437)
	org.apache.jsp.form_jsp._jspx_meth_c_005fforEach_005f0(form_jsp.java:376)
	org.apache.jsp.form_jsp._jspx_meth_h_005fform_005f0(form_jsp.java:332)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f0(form_jsp.java:249)
	org.apache.jsp.form_jsp._jspx_meth_c_005fif_005f0(form_jsp.java:195)
	org.apache.jsp.form_jsp._jspx_meth_f_005fsubview_005f0(form_jsp.java:159)
	org.apache.jsp.form_jsp._jspService(form_jsp.java:122)
	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:387)
	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.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	org.apache.jsp.index_jsp._jspx_meth_c_005fimport_005f1(index_jsp.java:1112)
	org.apache.jsp.index_jsp._jspx_meth_f_005fsubview_005f1(index_jsp.java:1078)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f5(index_jsp.java:961)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f4(index_jsp.java:908)
	org.apache.jsp.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:354)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:103)
	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:387)
	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)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	frontend.UserSessionFilter.doFilter(UserSessionFilter.java:167)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
	org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:274)
	org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:238)
	org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155)
	javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
	org.apache.jsp.question_002dvertical_jsp._jspx_meth_c_005fforEach_005f0(question_002dvertical_jsp.java:206)
	org.apache.jsp.question_002dvertical_jsp._jspx_meth_h_005fselectOneRadio_005f0(question_002dvertical_jsp.java:170)
	org.apache.jsp.question_002dvertical_jsp._jspx_meth_f_005fsubview_005f0(question_002dvertical_jsp.java:117)
	org.apache.jsp.question_002dvertical_jsp._jspService(question_002dvertical_jsp.java:80)
	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:387)
	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.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	org.apache.jsp.form_jsp._jspx_meth_c_005fimport_005f0(form_jsp.java:798)
	org.apache.jsp.form_jsp._jspx_meth_f_005fsubview_005f1(form_jsp.java:763)
	org.apache.jsp.form_jsp._jspx_meth_c_005fif_005f1(form_jsp.java:723)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f3(form_jsp.java:680)
	org.apache.jsp.form_jsp._jspx_meth_c_005fforEach_005f1(form_jsp.java:600)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f2(form_jsp.java:554)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f1(form_jsp.java:437)
	org.apache.jsp.form_jsp._jspx_meth_c_005fforEach_005f0(form_jsp.java:376)
	org.apache.jsp.form_jsp._jspx_meth_h_005fform_005f0(form_jsp.java:332)
	org.apache.jsp.form_jsp._jspx_meth_h_005fpanelGrid_005f0(form_jsp.java:249)
	org.apache.jsp.form_jsp._jspx_meth_c_005fif_005f0(form_jsp.java:195)
	org.apache.jsp.form_jsp._jspx_meth_f_005fsubview_005f0(form_jsp.java:159)
	org.apache.jsp.form_jsp._jspService(form_jsp.java:122)
	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:387)
	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.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:314)
	org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:171)
	org.apache.jsp.index_jsp._jspx_meth_c_005fimport_005f1(index_jsp.java:1112)
	org.apache.jsp.index_jsp._jspx_meth_f_005fsubview_005f1(index_jsp.java:1078)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f5(index_jsp.java:961)
	org.apache.jsp.index_jsp._jspx_meth_h_005fpanelGrid_005f4(index_jsp.java:908)
	org.apache.jsp.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:354)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:103)
	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:387)
	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)
	com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
	com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
	com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
	org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
	frontend.UserSessionFilter.doFilter(UserSessionFilter.java:167)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

note The full stack trace of the root cause is available in the JBossWeb/2.0.0.GA logs.
Is it because the question variable inside the subview is out of c:foreach scope?
What can be a solution in this case?

thank you in advance!
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 18 2007
Added on Nov 19 2007
3 comments
257 views