0

私はツールバーデータテーブルを持つ複合コンポーネントを持っています。また、データテーブルからデータを操作するためのフォームを含むファセットも定義しました。ユーザーは、さまざまな種類のデータに対してそのファセットを定義します。今、私はそのファセットを複数回レンダリングし、Primefaces components の widgetVar 名に衝突があるため、問題があります。insertChildrenを使用することはできません複数回なので、これが唯一の可能な解決策だと思います。また、コンポーネントのユーザーに 10 個のファセットを定義して ui:include を 10 回記述することを強制したくありません。複合コンポーネントに facelet コードを挿入する他の方法はありますか、またはパラメーターを facet に渡し、そのパラメーターを使用して widgetVar を動的に作成する方法はありますか?

4

3 に答える 3

2

OK、しばらくすると、やりたいことができなくなりました。最初に、次のような複合コンポーネントがありました。

<cc:interface>
  <!-- Attributes definition -->
  <cc:facet name="form"/>
</cc:interface>

<cc:implementation>
  <p:dialog><f:subview id="detailSubview1"><cc:renderFacet name="form"/></f:subview></p:dialog>
  <p:dialog><f:subview id="detailSubview2"><cc:renderFacet name="form"/></f:subview></p:dialog>
  <!-- There is some more renderFacets but this is enough -->
</cc:implementation>

たとえば、定義p:selectOneMenuなしでフォーム内にある場合、すべてが同じ名前になり、これは問題です。widgetVarwidgetVar

それで、これを完全に変更し、この複合コンポーネントをに変換ui:compositionして、ページで装飾します。その場合、ウィジェットの変数は、異なる名前のコンテナーにあるため、必要に応じて異なる名前で生成されます。

于 2013-01-09T13:17:36.173 に答える
0

PrimeFacesはを生成できるwigetVarので、生成する必要はありません。

3.4ユーザーガイドから:

<p:dialog id="dlg">
    <!-- contents -->
</p:dialog>
<p:commandButton type="button" value="Show" onclick="#{p:widgetVar('dlg')}.show();"/>

これは、コンテナの命名で機能するように設計されているため、複合コンポーネント、、などで問題なく機能するはず<ui:repeat/>です<h:dataTable/>

于 2013-01-10T06:56:41.157 に答える