预期的功能是,我从我的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 :(得分:0)
您应该为行使用唯一标识符,尝试对两个数据使用另一个 rowKey