删除最后一行后,Primefaces数据表未更新

时间:2016-06-15 01:52:13

标签: ajax primefaces datatable jsf-2.2

预期的功能是,我从我的primefaces数据表中删除一行,并将删除的列表添加到另一个数据表中。它与列表一起正常工作,直到它到达最后一行。实际问题是在删除最后一行后,它永远不会更新自己的数据表(数据表原始数据库和已删除的数据表属性列表)。

这是代码

<p:outputPanel id="ontProp" styleClass="ontologyProperties">
<p:panelGrid id="propertiesDetail" columns="1" styleClass="ontoProperties"
            rendered="#{not empty managebean.listedProperties}" >
    <p:outputLabel id="propLabel" value="Available Properties" styleClass="propLabel"/>

    <p:dataTable id="properties" scrollable="true" scrollHeight="200" var="prop"
                value="#{managebean.listedProperties}" styleClass="propertiesList"
                selection="#{managebean.addProperties}" rowKey="#{prop.name}"
                rendered="#{not empty managebean.listedProperties}"
                rowStyleClass="#{prop.objProp == true ? 'objprop' : null }
                #{prop.objProp == false ? 'dataprop' : null}
                #{prop.hasRestrictions == true ? 'restriction' : null}">

        <p:column selectionMode="multiple" style="width:30px;text-align:center"/>
        <p:column headerText="Domain" width="auto">
            <div align="center">
                <ui:repeat value="#{prop.domains}" var="domain">
                    <li><h:outputText value="#{domain.name}"/></li>
                </ui:repeat>
            </div>
        </p:column>
        <p:column headerText="Property" width="auto">
            <div align="center">
                <h:outputText id="opPropName" value=" #{prop.name}"/>
            </div>
        </p:column>
        <p:column headerText="Range" width="auto">
            <div align="center">
                <ui:repeat value="#{prop.objRanges}" var="range">
                    <li><h:outputText value="#{range.name}"/></li>
                </ui:repeat>
            </div>
        </p:column>                          
        <f:facet name="footer">
            <div align="left">
                <p:commandButton id="cmdPruneProp" actionListener="#{managebean.savePropertiesForClass()}"
                        icon="ui-icon-plus" update=":topForm:form:growl :topForm:form:properties 
                        :topForm:form:remProp" value="#{msg['apply.pruneProperties']}" >
                </p:commandButton>
            </div>
        </f:facet>
    </p:dataTable>

    <p:dataTable id="remProp" scrollable="true" scrollHeight="200" var="prop"
                value="#{managebean.selectedProperties}" styleClass="propertiesList"
                rowKey="#{prop.name}" rowStyleClass="#{prop.objProp == true ? 'objprop' : null }
                #{prop.objProp == false ? 'dataprop' : null} #{prop.hasRestrictions == true ? 'restriction' : null}">

        <p:column headerText="Domain" width="auto">
            <div align="center">
                <ui:repeat value="#{prop.domains}" var="domain">
                    <li><h:outputText value="#{domain.name}"/></li>
                </ui:repeat>
            </div>
        </p:column>
        <p:column headerText="Property" width="auto">
            <div align="center">
                <h:outputText id="rpropName" value=" #{prop.name}"/>
            </div>
        </p:column>
        <p:column headerText="Range" width="auto">
            <div align="center">
                <ui:repeat value="#{prop.objRanges}" var="range">
                    <li><h:outputText value="#{range.name}"/></li>
                </ui:repeat>
            </div>
        </p:column>
        <p:column headerText="Remove">
            <div align="center">
                <p:commandButton id="removeButton" icon="ui-icon-closethick" title="Remove"
                    action="#{managebean.removePropertiesForClass}"
                    update=":topForm:form:growl :topForm:form:properties
                    :topForm:form:remProp">
                    <f:setPropertyActionListener value="#{prop}"
                    target="#{managebean.ontologicalPropertyDTO}"/>
                </p:commandButton>
            </div>
        </p:column>
    </p:dataTable>                                           
</p:panelGrid>

  

我使用的是primefaces 5.1。    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该为行使用唯一标识符,尝试对两个数据使用另一个 rowKey