也许这是一个愚蠢的问题,但我使用
cc
引用复合组件,例如cc.attrs.randomAttr,但我也看到了
component
隐式对象,我已经使用它,因为我被告知,但我真的不明白它是什么。有人可以解释一下吗?
答案 0 :(得分:9)
cc
指的是评估时正在处理的顶级复合组件。
component
只是正在处理的ui组件。
因此,当在复合组件内部时,cc
引用“父”组件,而在单个组件上使用component
时引用该特定实例。或者对于简单的案例:
cc
== component.getCompositeComponentParent(component)
,其中组件是构建复合组件的组件。
E.g。考虑以下复合组件:
<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,而复合ID在两行上都是相同的。
请注意,当涉及多个复合组件嵌套时,事情可能会变得复杂一些。