2016-06-15 67 views
0

預期的功能是,我從我的primefaces數據表中刪除一行並將刪除的列表添加到另一個數據表。它可以正常工作,直到到達最後一行。實際的問題是在刪除最後一行後,它永遠不會自行更新數據(包括數據表的原始數據表和已刪除的數據表屬性列表)。刪除最後一行後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。 感謝您的幫助。

回答

0

你應該使用一個唯一的標識符爲行,請嘗試使用其他rowKey兩個datatbles