Jsf 从支持Bean显示Primefaces confirmDialog

Jsf 从支持Bean显示Primefaces confirmDialog,jsf,jsf-2,primefaces,datatable,Jsf,Jsf 2,Primefaces,Datatable,我有一个Primefaces数据表,当用户单击一行时,我会在表单中显示要编辑的数据。 如果用户更改表单中的数据并单击任何其他行,即如果有脏数据,我需要弹出一个确认对话框,显示用户是否希望保存/放弃数据。 当我试图从备份bean执行confirmDialog时,它不会显示。 感谢您的帮助 我已按以下方式实施: .xhtml: RequestContext.getCurrentInstance().execute(“PF('dataChangeDlg').show();”; 对我有用。 一定还有另

我有一个Primefaces数据表,当用户单击一行时,我会在表单中显示要编辑的数据。 如果用户更改表单中的数据并单击任何其他行,即如果有脏数据,我需要弹出一个确认对话框,显示用户是否希望保存/放弃数据。 当我试图从备份bean执行confirmDialog时,它不会显示。 感谢您的帮助

我已按以下方式实施:

.xhtml:
RequestContext.getCurrentInstance().execute(“PF('dataChangeDlg').show();”;
对我有用。
一定还有另一个错误。可能isDataChanged是错误的,更新中的组件ID是错误的。

PrimeFaces>=6.2

PrimeFaces.current().executeScript("PF('dataChangeDlg').show()");
<p:confirmDialog widgetVar="dataChangeDlg"  message="Save changes Or Cancel">                                
<p:commandButton value="Save Changes" oncomplete="PF('dataChangeDlg').hide();" 
          update=":transactionSetsForm:messages :transactionSetsForm:tsEntryFrmId" 
              action="#{transactionSetBean.updateRecord}" />
<p:commandButton value="Cancel"   onclick="PF('dataChangeDlg').hide();"                             

</p:confirmDialog>
public void onRowSelect(SelectEvent event)
    {
        String actionName = ON_ROW_SELECT;
        try
        {
            Student selectedObj = (Student)event.getObject();
            if (selectedObj != null)
            {
                selectedEditRec = selectedObj;
            }
            // if data is changed then show the dataChange dialog 
            if (isDataChanged())
            {
                setShowDataChangedDialog(true);
                RequestContext context = RequestContext.getCurrentInstance();
                // execute javascript and show dialog
                context.execute("PF('dataChangeDlg').show();");
            }

        }
        catch (Exception e)
        {
            handleException(e);
        }
    }
RequestContext.getCurrentInstance().execute("PF('dataChangeDlg').show();");

<p:ajax event="rowSelect" listener="#{transactionSetBean.onRowSelect}" update=":transactionSetsForm:tsEntryFrmId">
PrimeFaces.current().executeScript("PF('dataChangeDlg').show()");