[ https://issues.apache.org/jira/browse/TRINIDAD-1648?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12785819#action_12785819 ]
Matthias Weßendorf commented on TRINIDAD-1648: ---------------------------------------------- entire IllegalStateException stack trace: WARNING: The id "sp11" is used more than once. java.lang.IllegalStateException: Parent was not null, but this component not related at javax.faces.component.UIComponentBase.eraseParent(UIComponentBase.java:520) at javax.faces.component.UIComponentBase.access$400(UIComponentBase.java:104) at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2437) at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2411) at javax.faces.component.UIViewRoot.addComponentResource(UIViewRoot.java:531) at com.sun.faces.renderkit.html_basic.ScriptStyleBaseRenderer.processEvent(ScriptStyleBaseRenderer.java:99) at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2342) at javax.faces.event.SystemEvent.processListener(SystemEvent.java:102) at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:1993) at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:1941) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:285) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:243) at javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2005) at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1691) at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:403) at org.apache.myfaces.trinidad.component.ChildArrayList.add(ChildArrayList.java:61) at org.apache.myfaces.trinidad.component.ChildArrayList.add(ChildArrayList.java:69) at org.apache.myfaces.trinidad.component.ChildArrayList.add(ChildArrayList.java:33) at com.sun.faces.facelets.tag.jsf.ComponentSupport.addComponent(ComponentSupport.java:346) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:220) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:120) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:204) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:114) at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:149) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:86) at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:91) at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:75) at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:145) at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:715) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157) at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148) at org.apache.myfaces.trinidaddemo.webapp.RedirectFilter.doFilter(RedirectFilter.java:97) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:387) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) Dec 4, 2009 9:04:34 AM org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit createResponseWriter SEVERE: No RenderingContext has been created. > IllegalStateException in UIComponentBase when trying to add a resource > (outputScript) to the body target... > ----------------------------------------------------------------------------------------------------------- > > Key: TRINIDAD-1648 > URL: https://issues.apache.org/jira/browse/TRINIDAD-1648 > Project: MyFaces Trinidad > Issue Type: New Feature > Components: Components > Affects Versions: 2.0.0-core > Environment: Running Trinidad 2.0.x; with Facelets; no Partial State > Saving and using JSF Ajax request rather than the Trinidad PPR mechanism > Reporter: Pavitra Subramaniam > Attachments: IllegalStateException-II.patch, > IllegalStateException.patch > > > 1. I have a simple usecase where I have changed the Trinidad PPR code to use > the jsf.ajax. The client postback works ok and the command is processed on > the server properly. almost... > 2. During render response phase though, an <h:outputScript> tag present in > the page, gets re-targeted to be under the <body> tag and this causes an > IllegalStateException in the following method in UICOmponentBase.java. > 3. It appears that the JSF RI, throws an ISE when the parent does not contain > a child either in its child list or the facets. > * <p>If the specified {...@link UIComponent} has a non-null parent, > * remove it as a child or facet (as appropriate) of that parent. > * As a result, the <code>parent</code> property will always be > * <code>null</code> when this method returns.</p> > * > private static void eraseParent(UIComponent component) > 4. To reproduce the problem , > a. download the patch provided. > b. Run the ajaxPPRDemos.jspx. Notice the page comes up fine. also notice the > <h:outputScript> used. > c. Click on the 'partial Submit' button. This is wired to use the JSF Ajax > mechanism. On the server notice the ISE as mentioned above. > 5. from debugging it appears to be a weird bug in the RI implementation. > a. Before adding the component (in this case the h:outputScript) to the > current parent, it does doPostAddProcessing() which publishes a > PostAddToViewEvent. It calls the listener registered for the SystemEvent (as > one is available for the source component, > ComponentSystemEventListenerAdapter). > b. The event listener gets called, which eventually calls the > ScriptStyleBaseRenderer, which determines that the component actually needs > to be added to the facets in the body and then adds it. It's all fine until > here. > c. But when the component is being added to the facet, it's also erased from > its current parent. When it can't find the component in the current parent it > throws an ISE. But we got here in the first place because we were trying to > add it to the parent. Anyways, the ISE in UIComponentBase.eraseParent() seems > like a bug to me. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.