在contextmenu操作后没有更新数据表

时间:2012-09-17 10:35:30

标签: java jsp jsf primefaces

我有这段代码:

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

2 个答案:

答案 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中删除它。需要从两者中删除它。