ui:repeat is a component - not just a tag.  And
you can only use commandNavigationItems as
direct children of navigationPane.

Your choices:

- Use c:forEach instead of ui:repeat
- Use the built-in iteration in navigationPane:

             <tr:navigationPane hint="tabs" value="#{tabs}" var="tab">
                 <f:facet name="nodeStamp">
                    <tr:commandNavigationItem
                        text="#{tab.label}"
                        selected="#{ tab.selected}"
                        partialSubmit="true"/>

                 </f:facet>
             </tr:navigationPane>

A word of caution on the latter...  it didn't work until
issue ADFFACES-275 was fixed, which was fixed as of two
minutes ago. :)

-- Adam


Brian Smith wrote:
I am trying to create a component using Facelet Tags. The component uses a Trinidad NavigationPane (tr:NavigationPane). I am trying to make this component reusable by passing a collection of "options" to it. Each option represents a commandNavigationItem

Here is the component

<!--facelets/components/tabNavigation.xhtml-->

<div
    xmlns="http://www.w3.org/1999/xhtml";
    xmlns:f=" http://java.sun.com/jsf/core";
    xmlns:ui="http://java.sun.com/jsf/facelets";
    xmlns:tr=" http://myfaces.apache.org/trinidad";>
<tr:form>
         <tr:panelGroupLayout layout="horizontal">
             <tr:navigationPane hint="tabs">
                 <ui:repeat value="#{tabs}" var="tab">
<tr:commandNavigationItem text="#{tab.label}"
                        selected="#{ tab.selected}"
                        partialSubmit="true"/>
</ui:repeat>
             </tr:navigationPane>
         </tr:panelGroupLayout>
     </tr:form>
</div>

Here is my usage

<stl:tabNavigation
    tabs="#{AddressLookupBacking.tabOptions}"
    bean="#{AddressLookupBacking}"/>

I am initializing the tabOptions list in Faces-Config

Here is the tab lib
<facelet-taglib>
    <namespace>http://stlouiscity.com/jsf/csb</namespace>
    <tag>
        <tag-name>tabNavigation</tag-name>
        <source>facelets/components/tabNavigation.xhtml</source>
    </tag>
</facelet-taglib>

Here is my problem

SEVERE: Warning: illegal component hierarchy detected, expected UIXCommand but found another type of component instead.
java.lang.ClassCastException: com.sun.facelets.component.UIRepeat
at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.NavigationPaneRenderer.renderContent(NavigationPaneRenderer.java:120) at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.NavigationPaneRenderer.encodeAll (NavigationPaneRenderer.java:83) at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:184) at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:700) at org.apache.myfaces.trinidad.component.UIXCollection.encodeEnd(UIXCollection.java:495) at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:263) at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PanelGroupLayoutRenderer.encodeChild (PanelGroupLayoutRenderer.java:169) at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PanelGroupLayoutRenderer._encodeChildren(PanelGroupLayoutRenderer.java:140) at org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PanelGroupLayoutRenderer.encodeAll (PanelGroupLayoutRenderer.java:92) at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:184) at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java :700) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:242) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:239) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive (ComponentSupport.java:239) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:580) at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:178) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
    at com.sun.faces.lifecycle.LifecycleImpl.render (LifecycleImpl.java:137)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:327) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl (TrinidadFilterImpl.java:291) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:214) at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java :93) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java :664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    at java.lang.Thread.run (Thread.java:595)

It seems that Trinidad is getting hung up on the ui:repeat facelet tag. I am just learning both Facelets and Trinidad so any help would be greatly appreciated.

I have posted this both the the Facelets and Trinidad User Lists

Reply via email to