Primefaces从Backing调用ConfirmDialog

mrj*_*_05 4 java primefaces

我想confirmDialog通过支持来打电话.这段代码完美无缺,但如何通过支持设置消息并设置confirmDialog的actionlistener?有两个条件,而:

  • 用户选中复选框上的选项A(我省略了代码),然后应该直接将文本打印到控制台. - >这个是由下面的代码完成的
  • 用户选中复选框上的选项B,然后应显示confirmDialog,当用户按下YES按钮时,应调用后备上的其他功能.

怎么做?谢谢.

<p:commandButton value="Execute" icon="ui-icon-circle-check"  update="frmContent" actionListener="#{backing.validate}" />

<p:confirmDialog id="cfmDlg" widgetVar="wvCfmDlg" global="true" >
    <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
Run Code Online (Sandbox Code Playgroud)

在支持中:

public void validate() {
    if(mode.equals("1")) {
        System.out.println("OK");
    } else {
        //call confirmDialog and set message + action listener
        RequestContext context = RequestContext.getCurrentInstance();
        context.execute("wvCfmDlg.show();");
    }
}
Run Code Online (Sandbox Code Playgroud)

Hat*_*mam 12

如果我正确理解你的问题......我会这样做.

XHTML

<p:commandButton style="display: none" 
                 widgetVar="confirmButton"  
                 actionListener="#{backing.yesFunction}" >
   <p:confirm header="Confirmation" message="Are you sure?" /> 
</p:commandButton>

<p:commandButton value="Execute"
                 actionListener="#{backing.validate}" /> 

<p:confirmDialog id="cfmDlg" global="true" >
      <p:commandButton value="Yes" />
      <p:commandButton value="No" />
</p:confirmDialog>
Run Code Online (Sandbox Code Playgroud)

public void validate() {
   if(mode.equals("1")) {
       System.out.println("OK");
   } else {
    RequestContext context = RequestContext.getCurrentInstance();
    context.execute("PF('confirmButton').jq.click();");
   }
}
Run Code Online (Sandbox Code Playgroud)

基本上你以通常的方式添加一个隐藏按钮(带p:confirm),然后通过jQuery单击它.