ICEfaces
  1. ICEfaces
  2. ICE-3970

TagException: <f:facet> Facet Tag can only have one child UIComponent

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.6.2
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Environment:
      ICEfaces-1.6.2, jboss-4.2.1.GA
    • Workaround Exists:
      Yes
    • Workaround Description:
      Wrap literal text under <h:facet> in a <h:outputText>, e.g. <f:facet name="header"><h:outputText value="Inner Header"/></f:facet>

      Description

      Under certain conditions facelets complain about duplicate child in <f:facet>.

      For example consider the following page:

          <ice:form id="form">
              <ice:dataTable var="item" id="outerTable" rows="1" value="#{tableValues}" binding="#{sessionTable}">
                  <ice:column>
                      <f:facet name="header"><h:outputText value="Outer header"/></f:facet>
                      <ice:panelGroup>
                          <ice:dataTable var="item" id="innerTable" rows="1">
                              <ice:column>
                                  <f:facet name="header">Inner Header</f:facet>
                              </ice:column>
                          </ice:dataTable>
                      </ice:panelGroup>
                  </ice:column>
              </ice:dataTable>
          </ice:form>

      Here sessionTable is a session-scoped backing bean.

      The page is rendered fine the first time. The exception is thrown when you try to reload the page by pressing F5.

      ICEfaces-1.6.1 and ICEfaces-1.7.2-SP1 are not affected by this bug.

      To reproduce:
      - drop attached project facet-bug in ICEfaces-1.6.2-src\icefaces\samples
      - run ant
      - deploy facet-bug.war

      The stacktrace:

      2009-01-15 22:19:07,751 ERROR [com.icesoft.faces.facelets.D2DFaceletViewHandler] (http-0.0.0.0-8081-23:) Problem in renderResponse: /bug.xhtml @15,52 <f:facet> Facet Tag can only have one child UIComponent
      com.sun.facelets.tag.TagException: /bug.xhtml @15,52 <f:facet> Facet Tag can only have one child UIComponent
      at com.sun.facelets.tag.jsf.core.FacetHandler.apply(FacetHandler.java:80)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
      at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
      at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
      at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
      at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
      at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
      at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
      at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:314)
      at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:153)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
      at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
      at com.icesoft.faces.webapp.http.core.PageServer$1.respond(PageServer.java:26)
      at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:147)
      at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet$ThreadBlockingRequestResponse.respondWith(ThreadBlockingAdaptingServlet.java:36)
      at com.icesoft.faces.webapp.http.core.PageServer.service(PageServer.java:31)
      at com.icesoft.faces.webapp.http.core.MultiViewServer.service(MultiViewServer.java:54)
      at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer$Matcher.serviceOnMatch(PathDispatcherServer.java:50)
      at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:19)
      at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)
      at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:29)
      at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:110)
      at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:35)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher$Matcher.serviceOnMatch(PathDispatcher.java:52)
      at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:29)
      at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:97)
      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:687)
      at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469)
      at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403)
      at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
      at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:699)
      at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:670)
      at org.apache.jsp.index_jsp._jspService(index_jsp.java:57)
      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:387)
      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.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:543)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:595)

        Activity

        Hide
        User Ryagin added a comment -

        Sample project to reproduce the bug

        Show
        User Ryagin added a comment - Sample project to reproduce the bug

          People

          • Assignee:
            Unassigned
            Reporter:
            User Ryagin
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated: