0

次の(簡略化されていますが、問題を実証できます)コンポーネントがありますmy:slot

<composite:interface>
</composite:interface>
<composite:implementation>
  <h:panelGroup styleClass="xxx" layout="block">
    <composite:insertChildren/>
  </h:panelGroup>
</composite:implementation>

次に、このコンポーネントを 2 つのフォームで使用するフォームを作成します。

<my:slot>
    <h:form id="f3">
        <p:commandButton value="update f4" update=":f4"/>  
    </h:form>
</my:slot>
<my:slot>
  <h:form id="f4">Form f4</h:form>
</my:slot>

このコードでは、エラーが発生しますCannot find component with identifier ":f4" referenced from "j_idt11:f3:j_idt12"h:form id="f4"の外側を使えばOKですmy:sloth:form上記のような独自のコンポーネントで使用するにはどうすればよいですか?

4

1 に答える 1

3

複合コンポーネントは、それ自体でas のようにコンテナに名前を付け<h:form>ます。生成された HTML 出力を調べます。それらの ID は、子の ID の先頭に追加されます。

複合コンポーネントに固定 ID を指定して、JSF が予測できない ID を自動生成し、update.

<my:slot id="slot1">
    <h:form id="f3">
        <p:commandButton value="update f4" update=":slot2:f4"/>  
    </h:form>
</my:slot>
<my:slot id="slot2">
  <h:form id="f4">Form f4</h:form>
</my:slot>

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

于 2013-05-29T15:11:23.957 に答える