在嵌套复合组件内输出构面

时间:2013-01-31 15:54:18

标签: jsf-2 composite-component facet

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

<!-- 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>按预期工作。对我来说似乎很奇怪,一个人会失败而另一个会失败。

1 个答案:

答案 0 :(得分:2)

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