You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org> on 2007/11/19 03:20:43 UTC

[jira] Commented: (MYFACES-1770) components inside c:forEach has wrong id generation

    [ https://issues.apache.org/jira/browse/MYFACES-1770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12543454 ] 

Leonardo Uribe commented on MYFACES-1770:
-----------------------------------------

The patch is not complete. I forget to check when you assign a id on the component:

throws the following error:

javax.servlet.jsp.JspException: Duplicated Id found in the view: myid
	at javax.faces.webapp.UIComponentClassicTagBase.createUniqueId(UIComponentClassicTagBase.java:1175)
	at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:1082)
	at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:431)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_h_005finputText_005f1(forEachTest_jsp.java:334)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_c_005fforEach_005f1(forEachTest_jsp.java:296)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_h_005fform_005f0(forEachTest_jsp.java:191)
	at org.apache.jsp.forEachTest_jsp._jspService(forEachTest_jsp.java:112)
	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.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:338)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.buildView(JspViewHandlerImpl.java:480)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:334)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:138)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
	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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	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:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Nov 18, 2007 9:18:10 PM javax.faces.webapp._ErrorPageWriter handleException
SEVERE: An exception occurred
javax.faces.FacesException: An exception occurred processing JSP page /forEachTest.jsp at line 19

16: 			<br>
17: 		</c:forEach>
18:         <c:forEach var="item" items="#{listBean.stringArray}">
19:                     &nbsp;<h:inputText id="myid" value="#{item}" />
20:             <br>
21:         </c:forEach>		
22: 	</h:form>


Stacktrace:
	at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:344)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.buildView(JspViewHandlerImpl.java:480)
	at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:334)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:138)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
	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.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	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:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.jasper.JasperException: An exception occurred processing JSP page /forEachTest.jsp at line 19

16: 			<br>
17: 		</c:forEach>
18:         <c:forEach var="item" items="#{listBean.stringArray}">
19:                     &nbsp;<h:inputText id="myid" value="#{item}" />
20:             <br>
21:         </c:forEach>		
22: 	</h:form>


Stacktrace:
	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
	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.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:338)
	... 17 more
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: Duplicated Id found in the view: myid
	at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
	at org.apache.jsp.forEachTest_jsp._jspService(forEachTest_jsp.java:137)
	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)
	... 27 more
Caused by: javax.servlet.jsp.JspException: Duplicated Id found in the view: myid
	at javax.faces.webapp.UIComponentClassicTagBase.createUniqueId(UIComponentClassicTagBase.java:1175)
	at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:1082)
	at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:431)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_h_005finputText_005f1(forEachTest_jsp.java:334)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_c_005fforEach_005f1(forEachTest_jsp.java:296)
	at org.apache.jsp.forEachTest_jsp._jspx_meth_h_005fform_005f0(forEachTest_jsp.java:191)
	at org.apache.jsp.forEachTest_jsp._jspService(forEachTest_jsp.java:112)
	... 30 more




> components inside c:forEach has wrong id generation
> ---------------------------------------------------
>
>                 Key: MYFACES-1770
>                 URL: https://issues.apache.org/jira/browse/MYFACES-1770
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: JSR-252
>         Environment: jetty 6.1.3, myfaces 1.2.1-SNAPSHOT, jstl 1.2
>            Reporter: Leonardo Uribe
>         Attachments: patchWrongIdJstl.patch
>
>
> Using jsp pages I have made simple example to test if unified EL works and if I can mix jstl 1.2 tags with myfaces 1.2 components on
> the same page, one of the behaviors that promotes jsf 1.2.
> The test is this:
> public class ListBean
> {
>     
>     Log log = LogFactory.getLog(ListBean.class);
>     public ListBean(){
>         
>     }
>     
>     public List getStringList(){
>         List list = new ArrayList();        
>         list.add("A");
>         list.add("B");
>         list.add("C");
>         list.add("D");
>         return list;
>     }
>     
>     
> }
> page:
> 	<h:form id="form">
> 		<c:forEach var="item" items="#{listBean.stringList}">
>                     &nbsp;<h:inputText value="#{item}" />
> 			<br>
> 		</c:forEach>
> 	</h:form>
> and that's all.
> On myfaces I have the following output:
> &nbsp;
> <input id="form:j_id_id28" name="form:j_id_id28" type="text" value="A" />
> &nbsp;
> 	
> 	
> &nbsp;
> 			
> 	
> &nbsp;
> <input id="form:j_id_id28j_id_0" name="form:j_id_id28j_id_0" type="text" value="B" />
> and on the log:
> Nov 18, 2007 7:06:09 PM org.apache.myfaces.config.annotation.DefaultLifecycleProviderFactory getLifecycleProvider
> INFO: Using LifecycleProvider org.apache.myfaces.config.annotation.ResourceAnnotationLifecycleProvider
> Nov 18, 2007 7:06:09 PM javax.faces.webapp.UIComponentClassicTagBase findComponent
> WARNING: There is more than one JSF tag with an id : j_id_id28j_id_0
> Nov 18, 2007 7:06:09 PM javax.faces.webapp.UIComponentClassicTagBase findComponent
> WARNING: There is more than one JSF tag with an id : j_id_id28j_id_0
> Nov 18, 2007 7:06:37 PM javax.faces.webapp.UIComponentClassicTagBase findComponent
> WARNING: There is more than one JSF tag with an id : j_id_id28j_id_0
> Nov 18, 2007 7:06:37 PM javax.faces.webapp.UIComponentClassicTagBase findComponent
> if I assign a custom id for h:inputText throws an error of duplicateId
> Using jsf ri 1.2_05 I have the following output:
> &nbsp;
> <input type="text" name="form:j_id_id28" value="A" />
> 		
> &nbsp;
> <input type="text" name="form:j_id_id28j_id_1" value="B" />
> 		
> &nbsp;
> <input type="text" name="form:j_id_id28j_id_2" value="C" />
> 		
> &nbsp;
> <input type="text" name="form:j_id_id28j_id_3" value="D" />
> This is that I expected. With this code:
> <c:forEach var="item" items="#{listBean.stringList}">
> 	&nbsp;
> 	<h:inputText id="item" value="#{item}" />
> </c:forEach>
> Render this:
> &nbsp;
> <input id="form:item" type="text" name="form:item" value="A" />
> 		
> &nbsp;
> <input id="form:itemj_id_1" type="text" name="form:itemj_id_1" value="B" />
> 		
> &nbsp;
> <input id="form:itemj_id_2" type="text" name="form:itemj_id_2" value="C" />
> 		
> &nbsp;
> <input id="form:itemj_id_3" type="text" name="form:itemj_id_3" value="D" />
> This is correct!.
> I have made a probe with tomcat 6.0.14 and do the same as jetty.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.