Как узнать идентификатор клиента компонента для обновления / рендеринга ajax? Не удается найти компонент с выражением «foo», на которое ссылается «bar»

Следующий код основан на руководствах PrimeFaces DataGrid + DataTable и помещен в<p:tab> из<p:tabView> проживающий в<p:layoutUnit> из<p:layout>, Вот внутренняя часть кода (начиная сp:tab составная часть); внешняя часть тривиальна.

<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>

Когда я нажимаю<p:commandLink>код перестает работать и выдает сообщение:

Не удается найти компонент с выражением «insTable: display», на которое ссылаются «tabs: insTable: select».

Когда я пытаюсь сделать то же самое, используя<f:ajax>, это терпит неудачу с другим сообщением, в основном говоря тем же самым:

<f:ajax> содержит неизвестный идентификатор «insTable: display» не может найти его в контексте компонента «tabs: insTable: select»

Как это вызвано и как я могу решить это?

Ответы на вопрос(4)

Ваш ответ на вопрос