0

如何<p:dataTable id="dtCarg">从 中的命令按钮更新<p:dialog>

我不断收到以下错误:

找不到从“table_servidoresxdependencia”引用的标识符“dtCarg”的组件

代码是:

<h:form id="formGestionServidores" prependId="false" style="font-size:10px;">
    <p:panel>
        <table id="tabla_objetivo_02">
            <tr>
                <td><p:fieldset id="tb_tabla_new" legend="Servidores" styleClass="ui-state-hover"
                        style="min-width:98%;height:100% ">

                        <p:dataTable id="dtCarg" var="cargo" value="#{mantePlazasController.listCargos}"
                            rowStyleClass="#{cargo.colorEstado}" emptyMessage="No existen plazas para la unidad seleccionada"
                            editable="true" style="font-weight: normal;overflow:auto;min-width:98%;">
                            <p:column headerText="Unidad">
                                <h:outputText value="#{cargo.serDescDep}"
                                    rendered="#{mantePlazasController.nivel!=2 and mantePlazasController.nivel!=3 and mantePlazasController.nivel!=4 and mantePlazasController.nivel!=5 and mantePlazasController.nivel!=6 and mantePlazasController.nivel!=7}" />
                                <h:outputText value="#{cargo.serDescDepNVL3}"
                                    rendered="#{mantePlazasController.nivel==2 or mantePlazasController.nivel==3 or mantePlazasController.nivel==4 or mantePlazasController.nivel==5 or mantePlazasController.nivel==6 or mantePlazasController.nivel==7}" />
                            </p:column>
                            <p:column headerText="Historial">
                                <center>
                                    <p:commandButton id="btnHistorial" icon="ui-icon-note" oncomplete="dlRegularizar.show()"
                                        title="Historial de Plaza" action="#{mantePlazasController.mostrarHistorial}">
                                        <f:setPropertyActionListener value="#{cargo}" target="#{mantePlazasController.cargoSelected}" />
                                    </p:commandButton>
                                    falta oncomplete falta actualizar
                                </center>
                            </p:column>
                        </p:dataTable>
                    </p:fieldset></td>
            </tr>
        </table>

        <p:dialog widgetVar="dlRegularizar" header="Regularizar Servidores" width="1210" modal="true">
            <p:dataTable id="table_servidoresxdependencia" var="servidorxdependencia"
                value="#{mantePlazasController.servidoresxdependencia}"
                emptyMessage="No existen trabajadores en el historial, para esa plaza"
                rowStyleClass="#{servidorxdependencia.color_his}">

                <p:ajax event="rowEdit" listener="#{mantePlazasController.onEditRowServidorxDependencia}"
                    update="tabla_objetivo_02:dtCarg,table_servidoresxdependencia,notificacionCalificacion,my_json_data" />

                <f:facet name="header">
                        Servidor-Dependencia HISTORIAL
                    </f:facet>
                <p:column headerText="Codigo">
                    <h:outputText value="#{servidorxdependencia.serCod}" />
                </p:column>
                <p:column headerText="Fecha de inicio">
                    <p:cellEditor>
                        <f:facet name="output">
                            <h:outputText value="#{servidorxdependencia.serFech_in_unmsm_str}" />
                        </f:facet>
                        <f:facet name="input">
                            <p:calendar value="#{servidorxdependencia.serFech_in_unmsm}" navigator="true" inputStyle="width:70px"
                                locale="es" pattern="dd/MM/yyyy" showButtonPanel="true" readOnlyInputText="true" showOn="button">
                            </p:calendar>
                        </f:facet>
                    </p:cellEditor>
                </p:column>
                <p:column headerText="Edit" style="width:20px">
                    <p:rowEditor />
                </p:column>
                <p:column headerText="Elim">
                    <center>
                        <p:commandButton id="HisEliSer" icon="ui-icon-trash" oncomplete="puenteEliSerHis(),linea_ocultar()"
                            title="Eliminar">
                            <f:setPropertyActionListener value="#{servidorxdependencia}" target="#{mantePlazasController.servidorHisElim}" />
                        </p:commandButton>
                    </center>
                </p:column>
            </p:dataTable>
        </p:dialog>
    </p:panel>
</h:form>
4

1 回答 1

3

所以,基本上,你有一个

<h:form id="formGestionServidores" prependId="false" ...>
    <p:panel>
        <table id="tabla_objetivo_02">
            <tr>
                <td>
                    <p:fieldset id="tb_tabla_new" ...>
                        <p:dataTable id="dtCarg" ...>

并且您想在更新中引用它,如下所示

<p:ajax ... update="tabla_objetivo_02:dtCarg" />

这确实行不通。HTML<table>元素不代表 JSF 组件,因此它在 JSF 组件树中不可用。对于初学者来说,找出正确客户端 ID 的最简单方法是通过右键单击并在浏览器中查看源代码来查看生成的 HTML 输出。在更新中找到 HTML 表示<p:dataTable id="dtCarg">并准确使用其id属性,前缀为:.

根据到目前为止发布的视图标记<h:form prependId="false">,生成的 HTML 表示应该只有id="dtCarg",因此您应该按如下方式引用它:

<p:ajax ... update=":dtCarg" />

也可以看看:

于 2013-01-11T16:51:40.017 回答