2010-11-23 9 views
0

私はすでにこの件について2つの質問をしてきましたが、回答は参考になりませんでした。私はよく説明しなかったかもしれない、私が望むもの。さて、私はより具体的になります。 「コンポジットコンポーネントは、JSFの機能ではなく、Faceletsの機能です」と私は知っています。「Faceletsは、FaceletsがJSFを念頭に置いて設計されたビューテクノロジです」ということはわかっています。私は正確にはわかりませんが、 "cc.attrs"と "cc.clientId"という略語は、コンポーネントのためのJavaクラスがシーンの後ろにあると仮定しています。私はそれが "cc.myFunc"が利用できるような方法でオーバーライド/拡張​​することが可能かどうか知りたいですか?コンポーネントクラスを拡張/オーバーライドすることはできますか?「cc.myFunc」はfaceletで利用できますか?

答えて

1

複合コンポーネントにカスタムクラスを提供できます。要件は、クラスがUIComponentであり、インターフェイスNamingContainerを実装する必要があることです。拡張可能な基本クラスUINamingContainerがあります。

は、のようなあなたの複合利用の何かにそれを宣言するには、次のcomponentType属性の値がFacesComponent注釈の値であることを

@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"); 
    } 

} 

注:

<cc:interface componentType="my.CustomComponent"> 
</cc:interface> 

クラスのようなものである可能性があります。

複合コンポーネントの実装では、#{cc.sayHello()}を使用します。 Facelets ELResolverがなければsayHello属性を探すため、かっこが必要です。

関連する問題