3

也许这是一个愚蠢的问题,但我使用

cc

引用复合组件,例如 cc.attrs.randomAttr 但我也看到了

component

隐式对象,我使用它是因为有人告诉我,但我真的不明白它的用途。谁能解释一下?

4

1 回答 1

9

cc指评估时正在处理的顶级复合组件。

component只是正在处理的 ui 组件。

因此,当在复合组件内部时,cc指的是“父”组件,而component在单个组件上使用时指的是该特定实例。或者对于简单的情况:

cc== component.getCompositeComponentParent(component),其中组件是构建复合组件的组件。

例如,考虑以下复合组件:

<html 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"    
    xmlns:cc="http://java.sun.com/jsf/composite"
>
    <cc:interface/>

    <cc:implementation>

        <h:outputText value="Own ID: #{component.id}, parent composite ID: #{cc.id}" /> <br/>
        <h:outputText value="Own ID: #{component.id}, parent composite ID: #{cc.id}" />

    </cc:implementation>    

</html>

在 Facelet 上使用它会打印 2 个不同的“自己的”ID,即两个 outputText 组件中的一个,而复合 ID 在两行上都是相同的。

请注意,当涉及复合组件的多个嵌套时,事情可能会变得更加复杂。

于 2011-02-26T14:48:59.457 回答