2012-05-07 8 views
0

PrimeFacesタブ/タブビューコンポーネントに基づいて新しいコンポーネントを作成したいと考えています。ブラウザの[追加]タブのように表示され、フォームを記入するためのページが開きます。問題は、データモデル(http://www.primefaces.org/showcase/ui/tabviewModel.jsf)に基づいてTabViewに統合したいということです。今は、フォームを定義済みのタブでフォームに入力するタブを組み合わせるか、データのタブを動的に作成するTabViewを使用することができます。TabViewコンポーネント用の新しいレンダラーを宣言する

カスタムコンポーネントを作成する方法については、複合コンポーネントまたは新しいJavaクラスの2つの方法でJSFのドキュメントを読んでいます。私はカスタムコンポーネントを作成しようとしましたが、これ以上説明した方法では動作しません。

私の質問は以下のとおりです。

1)それは複合コンポーネントでこの問題を解決することは可能でしょうか?はいの場合、誰かが私にヒントを与えることができますか?

2)そうでない場合は、既存のPrimeFacesコンポーネント(おそらく新しい種類のTabView)に基づいて新しいコンポーネントを作成するためのチュートリアルがありますか?

UPD:いくつかの調査をした後、私は最も簡単な方法はTabViewの新しいレンダラーを書くことであることに気付きました。

私は新しいレンダラクラス宣言:

public class AddableTabViewRenderer extends TabViewRenderer 

および顔-config.xmlにそれを登録しかしながら

<render-kit> 
    <render-kit-id>HTML_BASIC</render-kit-id> 
    <renderer> 
    <component-family>org.primefaces.component</component-family> 
    <renderer-type>org.primefaces.component.TabView</renderer-type> 
    <renderer-class> 
     de.idealo.evaluation.jsf.webapp.component.AddableTabViewRenderer 
    </renderer-class> 
    </renderer> 
</render-kit> 

、TabView成分とビューがレンダリングされるのencodeEnd方法TabViewRendererが呼び出され、AddableTabViewRendererのオーバーライドされたメソッドは呼び出されません。 問題がどこにあるのかについてのヒントを教えてもらえますか?

答えて

0

私の設定でレンダラークラスが間違っています。私はコンポーネントの登録に関する指示を誤解しました。私は、レンダータイプがカスタムレンダラーでレンダリングされるクラスだと思っていました。代わりに、org.primefaces.component.TabViewRendererでなければなりません。今それはうまく動作します:)

関連する問題