0

我有这个代码:

            <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 方法调用从后端删除,但是表没有更新以反映新数据.

4

2 回答 2

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>
于 2012-09-17T10:55:36.023 回答
0

好的,我发现了问题所在 - 非常琐碎。我是从数据库中删除它,而不是从 Primefaces 用来在屏幕上呈现它的 Collection 中删除它。它需要从两者中删除。

于 2012-09-18T05:35:42.790 回答