Skip to main content
 首页 » 编程设计

jsf-2中嵌套复合组件内部的输出面

2024年09月07日16dudu

我有一个组件,用于在其子元素周围添加容器。该组件在其他组件中使用没有任何问题。但我希望能够使用这样的方面:

<!-- INTERFACE --> 
<cc:interface> 
    <cc:attribute name="detailTitle" /> 
    <cc:facet name="header"/> 
</cc:interface> 
 
<!-- IMPLEMENTATION --> 
<cc:implementation> 
    <li class="mvkcomp listItem listDetailToggle"> 
        <ezcomp:container> 
            <div class="listItemBody"> 
                <div class="header"> 
                    <!-- Facet not being rendered --> 
                    <cc:renderFacet name="header" /> 
 
                    <a href="#">Show/hide #{cc.attrs.detailTitle}</a> 
                </div> 
                <div class="detail"> 
                    <cc:insertChildren /> 
                </div> 
            </div> 
        </ezcomp:container> 
    </li> 
</cc:implementation> 

但这不会渲染任何内容。如果<cc:renderFacet>它按预期工作已移至 <ezcomp:container> 之外。有没有我没有看到的替代方案,或者我只需移动 liezcomp:container在组件之外使其工作?无论如何,这是首选的选择吗?

哦还有<cc:insertChildren>按预期工作。对我来说,这似乎很奇怪,其中一个会失败,而另一个却不会。

请您参考如下方法:

我选择处理这个问题的方法是将包装元素实现为模板。然后,我使用 ui:decorate 在复合组件内输出该模板。原始包装器现在仅在插入其子级之前输出模板。