2

他のコンポーネントと繰り返し処理できる複合コンポーネントを作成したいと考えています。問題は、複合コンポーネントがネーミングコンテナであり、単純な selectOnMenu の変更と他の selectOnMenu の更新が不可能であることcombo1:comboですcombo2:combo

最良の状況はform1:combo1and でありform1:combo2、その後、combo1 とombo2 は uinamingcontainer を使用しますh:form。このリンクはこれについて語っていますが、解決策はありません。 https://cwiki.apache.org/MYFACES/create-a-non-namingcontainer-composite-component.html

もう一度試してみますが、うまくいきません。p:commandbuttonCC 内の div の id が表示されません。 JSF2 複合コンポーネントの親の clientId の取得

<p:commandButton value="asd" partialSubmit="true" process="@this" update="fooId"/>  
    <cf:label id="fooId" title="xxxxx" />[index.xhtml]




<composite:interface componentType="RootComponent" preferred="false">
    <composite:attribute name="title" />
</composite:interface>

<composite:implementation>
<div id="#{cc.immediateParent.clientId}:#{cc.id}">
#{currentDate}
<h:panelGroup id="#{cc.clientId}" layout="block">
    <p:outputLabel id="#{cc.clientId}_lb" value="#{cc.attrs.title}">
        <composite:insertChildren />
    </p:outputLabel>
</h:panelGroup>
</div>
</composite:implementation>[label.xhtml](compositecomponent)
4

1 に答える 1

5

複合コンポーネントには本当に名前付けコンテナ インターフェイスが必要ですか?

はい。そうしないと、同じ親名前付けコンテナーで複数のコンポーネントを使用すると、複合コンポーネントの実装から「コンポーネント ID が重複しています」というエラーが発生します。

ベースのコンポーネントが不要であるNamingContainerと断言できる場合は、代わりにタグ ファイルを作成してください。.taglib.xml定型文が必要なだけです。

以下も参照してください。


もう一度試してみますが、うまくいきません。p:commandbuttonCC 内の div の ID が表示されない

複合実装が無効です。ajax でコンポジットを適切に参照するには、プレーンな HTML<div>または<span>正確に の ID を持つ が必要です#{cc.clientId}

例えば

<composite:implementation>
    <div id="#{cc.clientId}">
        #{currentDate}
        <h:panelGroup layout="block">
            <p:outputLabel id="#{cc.clientId}_lb" value="#{cc.attrs.title}">
                <composite:insertChildren />
            </p:outputLabel>
        </h:panelGroup>
    </div>
</composite:implementation>

<h:panelGroup>(ちなみに、は不必要であり、安全に省略できるという印象があります。さらに、繰り返し/重複を最小限に抑えるために、または何かを使用したid="#{cc.clientId}_lb"ほうがよいでしょう)id="label"

以下も参照してください。

于 2012-12-28T16:45:51.320 に答える