3

この複合コンポーネントの「実装」で実装する、ファセットを含む複合コンポーネントが必要です。私の問題はIDです。複合コンポーネントでのみ定義してから実装を入れると、それはレンダリングされるだけですが、コンポーネントは別の場所にあるためです。サンプルコードは次のとおりです。

myComposition.xhtml

<composite:implementation>
 <composite:renderFacet name="myFacet">
</composite:implementation>

myCompositionImpl.xhtml

<mySomething:myComposition>
 <f:facet name="myFacet">
  this code is rendered but the "component" which I define here is not placed 
  logically in the place where I defined the "renderFacet". 
 </f:facet>
</mySomething:myComposition>

これについて何ができますか?composite:insertFacet を使用すると、何もレンダリングされません。コンポーネントのクライアント ID を知る必要があるため、そこにもコンポーネントが必要です。

4

2 に答える 2

2

明確にするために:

コンポーネントのインターフェース内で <cc:facet name="myFacet"> を指定しましたか?

さらに、別の場所でとは正確にはどういう意味ですか?

いくつかのヒント:

  • renderFacet は正しく、insertFacet はコンポジット自体の中で定義されたファセット用です。
  • ファセットのコンテンツの最初の行として「<!-- -->」を追加してみてください。これは、単一行のファセット コンテンツに関するバグの回避策であると考えられます。
于 2011-03-11T08:58:39.233 に答える
0

私はそれを働かせました。問題は、挿入されたファセットの clientId を把握する必要があり、各複合コンポーネントが独自の NamingContainer を作成することを知らなかったことです。

私はそのようなものを持っていました:「myComposition2.xhtml」...

"index.faces"

結果の clientId は myC2:myC1: でした。

于 2011-03-16T08:40:44.350 に答える