我已经在这里问了两个关于这个问题的问题,但答案没有提供信息。可能是我没有解释好,我想要什么。现在,我将更具体。我知道“复合组件是Facelets的一个特性,而不是JSF的特性”,我知道“Facelets是Facelets是一个以JSF为设计理念的视图技术”。我不确切知道,但我想缩写“cc.attrs”和“cc.clientId”假设,在场景后面有一些用于组件的java类。我想知道,是否有可能以“cc.myFunc”可用的方式覆盖/扩展它?
答案 0 :(得分:1)
您可以为复合组件提供自定义类。要求是类必须是UIComponent并实现接口NamingContainer。您可以扩展一个基类UINamingContainer。
要在复合材料中声明它,请使用以下内容:
<cc:interface componentType="my.CustomComponent">
</cc:interface>
这个课可能是这样的:
@FacesComponent("my.CustomComponent") //Component type in the composite
public class AComponent extends UINamingContainer{
private int a;
//setter and getter for a
public void sayHello(){
System.out.println("Hello");
}
}
请注意,componentType属性的值是FacesComponent注释的值。
在复合组件的实现中,您将使用#{cc.sayHello()} 。括号是必需的,因为没有它们,Facelets ELResolver会尝试查找属性sayHello。