0

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には、次のアクションリスナーがあります。アクションリスナーが完了すると、ロード初期ビューメソッドを呼び出して、定義済みのレンダリング前のビューイベントのためにデータをリロードします。

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;
    }
4

1 に答える 1