Jsf cellEdit上的p:DataTable消失p:ajax事件

Jsf cellEdit上的p:DataTable消失p:ajax事件,jsf,primefaces,Jsf,Primefaces,我使用NetBeans 8.2、GlassFish 5.0和PrimeFaces 5.0。 我创建了一个带有单元格可编辑数据表的页面。当我在ajax事件后对一个单元格进行修改时,整个数据表都会被修改后的值替换。就像ajax响应一样,它不会返回整个表的内容。我怎样才能纠正它 facelet: <h:form id="frmDemands"> <p:growl id="msgs" showDetail="true"/> <div&

我使用NetBeans 8.2、GlassFish 5.0和PrimeFaces 5.0。 我创建了一个带有单元格可编辑数据表的页面。当我在ajax事件后对一个单元格进行修改时,整个数据表都会被修改后的值替换。就像ajax响应一样,它不会返回整个表的内容。我怎样才能纠正它

facelet:

    <h:form id="frmDemands">
        <p:growl id="msgs" showDetail="true"/>
        <div>
        <p:dataTable 
            id="dtblDemands" 
            value="#{demandUtility.demands}" 
            var="demand" 
            editable="true" 
            editMode="cell" 
            paginator="true" 
            paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="5,10,15">
            <p:ajax event="cellEdit" listener="#{applicantBean.onCellEdit}" update=":frmDemands :frmDemands:msgs"/>
            <f:facet name="header">Demands</f:facet>
            <p:column headerText="ID">
                <h:outputText value="#{demand.id}"/>
            </p:column>
            <p:column headerText="Amount">
                <p:cellEditor>
                    <f:facet name="output"><h:outputText value="#{demand.amount}"/></f:facet>
                    <f:facet name="input"><p:inputText value="#{demand.amount}"/></f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="State">
                <h:outputText value="#{demand.state}"/>
            </p:column>
            <p:column>
                <p:commandButton value="Delete" rendered="#{applicantBean.isDemandDeleteable( demand )}" actionListener="#{applicantBean.onDeleteDemand( demand.id )}" update="@form"/>
            </p:column>
        </p:dataTable>
        </div>
    </h:form>
当我尝试将@parent值设置为ajax事件的update属性时,dataTable也会消失


有人能帮我吗?

创建一个更新表并将范围更改为@ViewScoped 这对我有用

<h:form id="frmDemands">
    <p:growl id="msgs" showDetail="true"/>
    <p:remoteCommand name="rcCellEditUpdate" 
                     update=":frmDemands:dtblDemands :frmDemands:msgs" />
    <div>
        <p:dataTable 
            id="dtblDemands" 
            value="#{demandUtility.demands}" 
            var="demand" 
            editable="true" 
            editMode="cell" 
            paginator="true" 
            paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="5,10,15">
            <p:ajax event="cellEdit" listener="#{applicantBean.onCellEdit}" oncomplete="rcCellEditUpdate();"/>
            <f:facet name="header">Demands</f:facet>
            <p:column headerText="ID">
                <h:outputText value="#{demand.id}"/>
            </p:column>
            <p:column headerText="Amount">
                <p:cellEditor>
                    <f:facet name="output"><h:outputText value="#{demand.amount}"/></f:facet>
                    <f:facet name="input"><p:inputText value="#{demand.amount}"/></f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="State">
                <h:outputText value="#{demand.state}"/>
            </p:column>
            <p:column>
                <p:commandButton value="Delete" rendered="#{applicantBean.isDemandDeleteable( demand )}" actionListener="#{applicantBean.onDeleteDemand( demand.id )}" update="@form"/>
            </p:column>
        </p:dataTable>
    </div>
</h:form>

试着做你的豆子@ViewScoped@XtremeBiker你是对的!这显然是我的错误!谢谢你的评论!这对我也有用。非常感谢您提供的有用且适用的答案!它使用@viewscope会话bean和p:ajax标记的update=:frmDemands:dtblrequireds:frmDemands:msgs值,而不使用remoteCommand。
<h:form id="frmDemands">
    <p:growl id="msgs" showDetail="true"/>
    <p:remoteCommand name="rcCellEditUpdate" 
                     update=":frmDemands:dtblDemands :frmDemands:msgs" />
    <div>
        <p:dataTable 
            id="dtblDemands" 
            value="#{demandUtility.demands}" 
            var="demand" 
            editable="true" 
            editMode="cell" 
            paginator="true" 
            paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="5,10,15">
            <p:ajax event="cellEdit" listener="#{applicantBean.onCellEdit}" oncomplete="rcCellEditUpdate();"/>
            <f:facet name="header">Demands</f:facet>
            <p:column headerText="ID">
                <h:outputText value="#{demand.id}"/>
            </p:column>
            <p:column headerText="Amount">
                <p:cellEditor>
                    <f:facet name="output"><h:outputText value="#{demand.amount}"/></f:facet>
                    <f:facet name="input"><p:inputText value="#{demand.amount}"/></f:facet>
                </p:cellEditor>
            </p:column>
            <p:column headerText="State">
                <h:outputText value="#{demand.state}"/>
            </p:column>
            <p:column>
                <p:commandButton value="Delete" rendered="#{applicantBean.isDemandDeleteable( demand )}" actionListener="#{applicantBean.onDeleteDemand( demand.id )}" update="@form"/>
            </p:column>
        </p:dataTable>
    </div>
</h:form>