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="Комментарий/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!