我必须点击两次才能更新其他表格(Primefaces p:ajax)

时间:2016-05-10 03:30:47

标签: ajax jsf primefaces

我有一个问题与primefaces 5.1当我从表中选择一行,我想更新其他表我必须点击两次才能工作。

当我单击tb_hojas表中的一行时,此方法cargarTablas()获取数据并从tb_familia表中更新ArrayList,但是我必须单击tb_hojas表的两行以查看tb_familia中的新数据表

在我使用RequestScope的bean中它可以工作,但我需要使用ViewScoped。

这是我的代码XHTML:

    <h:form id="panel">

        <p:dataTable  id="tb_hojas" selection="#{hojaB2.filaHojas}" rowKey="#{lis.id}"
                      selectionMode="single" scrollable="true" scrollHeight="300" resizableColumns="true" 
                      liveResize="true" var="lis" value="#{hojaB2.tablaHojas}"
                      paginator="true" rows="50" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                      rowsPerPageTemplate="25,30,50" filteredValue="#{hojaB2.filtroHojas}">
            <p:ajax  listener="#{hojaB2.cargarTablas()}" update=":panel" event="rowSelect" />  
            <p:column headerText="id" sortBy="#{lis.id}" filterBy="#{lis.id}">
                <h:outputText  value="#{lis.id}"/>
            </p:column>
            <p:column headerText="nombre" sortBy="#{lis.nombre}" filterBy="#{lis.nombre}">
                <h:outputText  value="#{lis.nombre}"/>
            </p:column>
        </p:dataTable>
         <p:dataTable id="tb_familia" selection="#{hojaB2.filaFamilia}" selectionMode="single" scrollable="true" scrollHeight="300" resizableColumns="true" 
                     liveResize="true" var="lis2" value="#{hojaB2.tablaFamilia}" rowKey="#{lis2.codigo}"
                     paginator="true" rows="50" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                     rowsPerPageTemplate="25,30,50" filteredValue="#{hojaB2.filtroFamilia}">
            <p:ajax listener="#{hojaB2.cargarDialogoFamilia()}" oncomplete="PF('dlg_familia2').show();" update="@([id$=tb_familia]),@([id$=Form])" event="rowSelect" >  
            </p:ajax>
            <p:column headerText="codigo" sortBy="#{lis2.codigo}" filterBy="#{lis2.codigo}">
                <h:outputText  value="#{lis2.codigo}"/>
            </p:column>
            <p:column headerText="nombre" sortBy="#{lis2.nombre}" filterBy="#{lis2.nombre}">
                <h:outputText  value="#{lis2.nombre}"/>
            </p:column>
            <p:column headerText="cargo" sortBy="#{lis2.cargo}" filterBy="#{lis2.cargo}">
                <h:outputText  value="#{lis2.nombre}"/>
            </p:column>
        </p:dataTable>
    </h:form>

1 个答案:

答案 0 :(得分:0)

为什么要更新p:tables所在的自己的表格? 我相信只更新另一个表会解决你的问题,足以满足你的要求。

示例:

 <p:ajax  listener="#{hojaB2.cargarTablas()}" update="tb_familia" event="rowSelect" />