我有这段代码:
<p:contextMenu for="customersTable">
<p:menuitem value="Delete" update="customersTable" icon="ui-icon-close" actionListener="#{customerbean.onDeleteCustomer}"/>
</p:contextMenu>
<p:dataTable id="customersTable" var="customer" widgetVar="customerTable" value="#{customerbean.customerList}" paginator="true" rows="20" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="10,20,50,100" emptyMessage="#{text['table.customer.filter.notfound']}" filteredValue="#{customerbean.filteredCustomers}" editable="true" draggableColumns="true" rowKey="#{customer.id}" selection="#{customerbean.selectedCustomer}" selectionMode="single">
我的问题是,当我点击contextMenu中的“删除”时,一切正常,因为记录/行正在通过bean方法调用从后端删除,但表格没有更新反映新数据。
答案 0 :(得分:1)
您必须在更新时为dataTable提供完整的组件ID。
<h:form id="frm">
<p:contextMenu for="customersTable">
<p:menuitem value="Delete" update="frm:customersTable" icon="ui-icon-close" actionListener="#{customerbean.onDeleteCustomer}"/>
</p:contextMenu>
<p:dataTable id="customersTable" var="customer" widgetVar="customerTable" value="#{customerbean.customerList}" paginator="true" rows="20" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="10,20,50,100" emptyMessage="#{text['table.customer.filter.notfound']}" filteredValue="#{customerbean.filteredCustomers}" editable="true" draggableColumns="true" rowKey="#{customer.id}" selection="#{customerbean.selectedCustomer}" selectionMode="single">
</h:form>
答案 1 :(得分:0)
好的,我发现问题是什么 - 非常微不足道。我是从数据库中删除它,而不是从Primefaces用于在屏幕上呈现它的Collection中删除它。需要从两者中删除它。