动态JSF复合组件样式/呈现

动态JSF复合组件样式/呈现,jsf,rendering,stylesheet,composite,composite-component,Jsf,Rendering,Stylesheet,Composite,Composite Component,我对复合组件有点小问题。此组件的实现如下所示: <composite:implementation> <h:outputStylesheet name="foo.css" library="bar"/> <div id="#{cc.clientId}"> <composite:insertChildren/> </div> </composite:implementation>

我对复合组件有点小问题。此组件的实现如下所示:

<composite:implementation>
    <h:outputStylesheet name="foo.css" library="bar"/>

    <div id="#{cc.clientId}">
        <composite:insertChildren/>
    </div>
</composite:implementation>

它被动态地包含在facelet页面中,该页面包含这个带有JSTL核心标记的组件。facelet页面与下面的页面类似

<h:panelGroup id="viewport" layout="block">
    <c:if test="#{controller.object != null}">
        <c:forEach items="#{controller.object.elements}" var="element">
            <c:if test="#{element.type == 'type1'}">
                <my:componentTypeOne id="#{element.id}"/>
            </c:if>

            <c:if test="#{element.type == 'type2'}">
                <my:componentTypeTwo id="#{element.id}"/>
            </c:if>
        </c:forEach>
    </c:if>
</h:panelGroup>

因此,当我只渲染页面的
视口时,会渲染组件,但没有在复合组件
my:component
中定义的样式表。有没有任何方法可以在不呈现整个页面的情况下即时包含样式表


编辑:示例代码的扩展..

您真的需要使用JSTL吗?您可以更改
,以及
渲染属性。JSTL不与JSF同步运行,尽管我不知道这是否是问题所在。应该可以替换
,但是我需要一个与
标记等效的组件,因为未来应该有更多的组件类型。这不是问题,只需将所有组件包装在一个中并设置其呈现属性。我明天将尝试这种方法。谢谢你的建议@RinaldoPJr:将
替换为
只会导致重复的组件ID错误。这不是OP想要的。