Jsf 2 删除不更新数据表行的事件

Jsf 2 删除不更新数据表行的事件,jsf-2,primefaces,datatable,Jsf 2,Primefaces,Datatable,在primefaces中,我有一个确认对话框,当我确认删除按钮时,数据库中的行将被删除,但页面不会更新。我是否遗漏了不更新页面的内容。我的对话框定义如下 <h:form id="searchForm"> <p:commandButton id="showDialogButton" value="Delete Data" onclick="confirmation.show()" style="margin:20px" type=

在primefaces中,我有一个确认对话框,当我确认删除按钮时,数据库中的行将被删除,但页面不会更新。我是否遗漏了不更新页面的内容。我的对话框定义如下

<h:form id="searchForm">
    <p:commandButton id="showDialogButton" value="Delete Data" onclick="confirmation.show()" 
                    style="margin:20px" type="button" immediate="true" />
                <p:confirmDialog id="confirmDialog" message="Are you sure you want to delete all the data for this submission?"  
                            header="Initiating delete process" severity="alert" widgetVar="confirmation">      
                    <p:commandButton id="confirm" value="Yes Sure" update=":searchForm:rowDataTable" oncomplete="confirmation.hide()"  
                                actionListener="#{myDataBean.deleteData}" immediate="true" ajax="true"/>  
                    <p:commandButton id="decline" value="Not Yet" onclick="confirmation.hide()" type="button" immediate="true"/>   

                </p:confirmDialog>

以相同的形式,我定义了一个数据表

<p:dataTable var="row"
                    value="#{myDataBean.entries}"
                    id="rowDataTable" paginator="true"
                    rows="30"
                    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                    rowsPerPageTemplate="10,20,30" 
                    >

里面有一个子表,显示所有数据

<p:subTable id="rowSubTable" var="details" value="#{row.data}">  

在我的bean中,我有以下操作侦听器。操作侦听器完成后,由于我定义了一个预渲染视图事件,它将调用load initial view方法来重新加载数据

public List<SubmissionRow> entries = new ArrayList<SubmissionRow>();

public void loadInitialView() {
    if (!postback) {
        List<Submission> data = loadData();
        //sort data and build entries list
    }       
}

@Transactional
    public void deleteData(ActionEvent actionEvent) {
        submission.deleteRows(submissionBean.getSubmission());
        entries.clear();
        postback = false;
    }
public List entries=new ArrayList();
public void loadInitialView(){
如果(!回发){
列表数据=加载数据();
//对数据和生成条目列表进行排序
}       
}
@交易的
公共作废删除数据(ActionEvent ActionEvent){
submission.deleteRows(submissionBean.getSubmission());
条目。清除();
回发=假;
}

由于在我的页面上只有可见的表,我刚刚使用外部上下文从操作侦听器重新加载了页面。这样数据表就更新了。

调用loadData()后,是否调试数据数组以检查数据数组是否不包含已删除的行?为什么要使用事务性注释?提交属性是一个EJB?或者什么?是的,当我在db调用返回时清除它时,我的条目是空的。是的,提交是一个jpa实体,因此使用事务性。很抱歉,请重新阅读我的答案,是的,loadData调用后数据数组为空。所以bean包含正确的数据,但它没有反映在datatable上?你有没有检查firebug客户端是否有eror?ajax响应是否正常?