Primefaces从Backing调用ConfirmDialog

时间:2014-02-17 08:14:07

标签: 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>

在支持中:

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();");
    }
}

1 个答案:

答案 0 :(得分: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>

<强>

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

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