<f:ajax>包含一个带有compositecomponent </f:ajax>的未知id

时间:2012-09-13 13:59:01

标签: jsf-2 composite-component

我在表单中使用复合组件,并且我想使用ajax调用,当复合组件值更改时,要重置的相关字段的模型值以及要再次呈现的相应组件(空)。但似乎我只能为组件设置渲染;不是为了另一个;我一直在<f:ajax> contains an unknown id 'ticketForm:gfhId'

我有一个复合组件loc:Location(简化)

<!DOCTYPE...
<html...
<h:body>
  <composite:interface>
    <composite:attribute name="visibleFieldValue" required="true" />
    <composite:attribute name="hiddenFieldValue" required="true" />
    <composite:clientBehavior name="changeLocation" event="click" targets="updateButton deleteButton"/>
  </composite:interface>
  <composite:implementation>
    <div id="#{cc.clientId}">
      <h:inputText id="visibleId" value="#{cc.attrs.visibleFieldValue}"
        readonly="true" onfocus="#{rich:component('popUpPnl')}.show('', {top:'100px', left:'250px'});"/>
      <h:inputHidden id="hiddenId" value="#{cc.attrs.hiddenFieldValue}"
        converter="es.caib.gesma.gesman.data.converter.LocationConverter" />
      <a4j:commandButton id="deleteButton"
        image="/resources/images/icons/textfield_delete.png" alt="Borrar"/>
      <h:commandButton id="updateButton" value="Update"/>

      ...
    </composite:implementation>
  </body>
</html>

该组件在ticketForm格式内使用,如下所示:

<loc:location id="locationId"
  hiddenFieldValue="#{ticketCtrl.ticket.location}"
  visibleFieldValue="#{ticketCtrl.ticket.locationDescription}">
  <f:ajax event="changeLocation" render="ticketForm:gfhId" execute="@this"
    listener="#{ticketCtrl.locationListener}"/>
</loc:location>

将渲染设置为@all@form会导致异常无法显示,但gfhId组件未呈现(我认为它仅将其应用于复合组件)。

为了进行比较,我使用相同形式的inputText组件设置了所需的行为:

<h:inputText id="contactId" value="#{ticketCtrl.ticket.contactPerson}">
  <a4j:ajax event="change" render=":ticketForm:gfhId"
    execute="@this" listener="#{ticketCtrl.locationListener}"/>
</h:inputText>

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

相对于父:组件解析executerender <f:ajax>中所有相对客户ID(即那些不以NamingContainer开头的)。复合组件隐式为NamingContainer。所以它基本上在ticketForm:gfhId的上下文中寻找<cc:implementation>,但没有。

请改用绝对客户端ID。

<f:ajax ... render=":ticketForm:gfhId" />

另见: