¿Cómo encontrar el ID de cliente del componente para la actualización / renderización de ajax? No se puede encontrar el componente con la expresión "foo" referenciada desde "bar"
l siguiente código está inspirado en PrimeFaces DataGrid + DataTable Tutorials y se coloca en un<p:tab>
de un<p:tabView>
que reside en una<p:layoutUnit>
de un<p:layout>
. Aquí está la parte interna del código (a partir dep:tab
componente); la parte externa es trivial.
<p:tabView id="tabs">
<p:tab id="search" title="Search">
<h:form id="insTable">
<p:dataTable id="table" var="lndInstrument" value="#{instrumentBean.instruments}">
<p:column>
<p:commandLink id="select" update="insTable:display" oncomplete="dlg.show()">
<f:setPropertyActionListener value="#{lndInstrument}"
target="#{instrumentBean.selectedInstrument}" />
<h:outputText value="#{lndInstrument.name}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog id="dlg" modal="true" widgetVar="dlg">
<h:panelGrid id="display">
<h:outputText value="Name:" />
<h:outputText value="#{instrumentBean.selectedInstrument.name}" />
</h:panelGrid>
</p:dialog>
</h:form>
</p:tab>
</p:tabView>
Cuando hago clic en<p:commandLink>
, el código deja de funcionar y muestra el mensaje:
No se puede encontrar el componente con la expresión "insTable: display" al que se hace referencia en "tabs: insTable: select".
Cuando intento lo mismo usando<f:ajax>
, falla con un mensaje diferente que básicamente dice lo mismo:
<f:ajax>
contiene una identificación desconocida "insTable: display" no puede localizarlo en el contexto del componente "pestañas: insTable: seleccione"
¿Cómo se causa esto y cómo puedo resolverlo?