0

我有以下(简化,但可以证明问题)组件my:slot

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

现在我想通过两种形式来广告表单来使用这个组件:

<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"使用my:slot. 如何h: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 回答